aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDake Gu <dake@google.com>2017-09-21 00:49:46 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2017-09-21 00:49:46 +0000
commit0ebd974f8faaf08d60ab9a67759ab7e049bb0b48 (patch)
tree518fe9f4b3cdf8260d062b24a826d797e83de72e
parent2100a9051462fd3fb47ef5930e813ceeba954942 (diff)
parent3a4653f65ea030436063343d23210e8c987edaad (diff)
downloadsupport-0ebd974f8faaf08d60ab9a67759ab7e049bb0b48.tar.gz
Merge "leanback: ArrayObjectAdapter.setItems() with no DiffCallback" into oc-mr1-dev
-rw-r--r--v17/leanback/src/android/support/v17/leanback/widget/ArrayObjectAdapter.java11
-rw-r--r--v17/leanback/tests/java/android/support/v17/leanback/widget/ObjectAdapterTest.java23
2 files changed, 32 insertions, 2 deletions
diff --git a/v17/leanback/src/android/support/v17/leanback/widget/ArrayObjectAdapter.java b/v17/leanback/src/android/support/v17/leanback/widget/ArrayObjectAdapter.java
index 88de24cba22..00bc073dc36 100644
--- a/v17/leanback/src/android/support/v17/leanback/widget/ArrayObjectAdapter.java
+++ b/v17/leanback/src/android/support/v17/leanback/widget/ArrayObjectAdapter.java
@@ -230,10 +230,17 @@ public class ArrayObjectAdapter extends ObjectAdapter {
* specified position.
*
* @param itemList List of new Items
- * @param callback DiffCallback Object to compute the difference between the old data set and
- * new data set.
+ * @param callback Optional DiffCallback Object to compute the difference between the old data
+ * set and new data set. When null, {@link #notifyChanged()} will be fired.
*/
public void setItems(final List itemList, final DiffCallback callback) {
+ if (callback == null) {
+ // shortcut when DiffCallback is not provided
+ mItems.clear();
+ mItems.addAll(itemList);
+ notifyChanged();
+ return;
+ }
mOldItems.clear();
mOldItems.addAll(mItems);
diff --git a/v17/leanback/tests/java/android/support/v17/leanback/widget/ObjectAdapterTest.java b/v17/leanback/tests/java/android/support/v17/leanback/widget/ObjectAdapterTest.java
index 6ed70453286..48fdbbd8e86 100644
--- a/v17/leanback/tests/java/android/support/v17/leanback/widget/ObjectAdapterTest.java
+++ b/v17/leanback/tests/java/android/support/v17/leanback/widget/ObjectAdapterTest.java
@@ -23,6 +23,7 @@ import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.atLeast;
import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.times;
import android.content.Context;
import android.os.Bundle;
@@ -377,6 +378,28 @@ public class ObjectAdapterTest {
assertTrue(mAdapter.isImmediateNotifySupported());
}
+
+ @Test
+ public void testSetItemsNoDiffCallback() {
+ mItems.add(new AdapterItem(1, "a"));
+ mItems.add(new AdapterItem(2, "b"));
+ mItems.add(new AdapterItem(3, "c"));
+ mAdapter.setItems(mItems, null);
+ Mockito.verify(mObserver, times(1)).onChanged();
+ Mockito.verify(mObserver, never()).onItemRangeInserted(anyInt(), anyInt());
+ Mockito.verify(mObserver, never()).onItemRangeRemoved(anyInt(), anyInt());
+ Mockito.verify(mObserver, never()).onItemRangeMoved(anyInt(), anyInt(), anyInt());
+
+ mItems.add(new AdapterItem(4, "a"));
+ mItems.add(new AdapterItem(5, "b"));
+ mItems.add(new AdapterItem(6, "c"));
+ mAdapter.setItems(mItems, null);
+ Mockito.verify(mObserver, times(2)).onChanged();
+ Mockito.verify(mObserver, never()).onItemRangeInserted(anyInt(), anyInt());
+ Mockito.verify(mObserver, never()).onItemRangeRemoved(anyInt(), anyInt());
+ Mockito.verify(mObserver, never()).onItemRangeMoved(anyInt(), anyInt(), anyInt());
+ }
+
/**
* The following test cases are mainly focused on the basic functionality provided by setItems
* function