Merge "Add payload for condition card to reuse the viewholder"
diff --git a/src/com/android/settings/dashboard/DashboardData.java b/src/com/android/settings/dashboard/DashboardData.java
index 0fc994b..147f39e 100644
--- a/src/com/android/settings/dashboard/DashboardData.java
+++ b/src/com/android/settings/dashboard/DashboardData.java
@@ -16,6 +16,7 @@
package com.android.settings.dashboard;
import android.annotation.IntDef;
+import android.support.annotation.Nullable;
import android.support.v7.util.DiffUtil;
import android.text.TextUtils;
import com.android.settings.dashboard.conditional.Condition;
@@ -350,6 +351,15 @@
public boolean areContentsTheSame(int oldItemPosition, int newItemPosition) {
return mOldItems.get(oldItemPosition).equals(mNewItems.get(newItemPosition));
}
+
+ @Nullable
+ @Override
+ public Object getChangePayload(int oldItemPosition, int newItemPosition) {
+ if (mOldItems.get(oldItemPosition).type == Item.TYPE_CONDITION_CARD) {
+ return "condition"; // return anything but null to mark the payload
+ }
+ return null;
+ }
}
/**
diff --git a/tests/robotests/src/com/android/settings/dashboard/DashboardDataTest.java b/tests/robotests/src/com/android/settings/dashboard/DashboardDataTest.java
index 52c2103..abea565 100644
--- a/tests/robotests/src/com/android/settings/dashboard/DashboardDataTest.java
+++ b/tests/robotests/src/com/android/settings/dashboard/DashboardDataTest.java
@@ -196,6 +196,31 @@
testDiffUtil(mDashboardDataWithOneConditions, mDashboardDataWithNoItems, testResultData);
}
+ @Test
+ public void testPayload_ItemConditionCard_returnNotNull() {
+ final DashboardData.ItemsDataDiffCallback callback = new DashboardData
+ .ItemsDataDiffCallback(
+ mDashboardDataWithOneConditions.getItemList(),
+ mDashboardDataWithOneConditions.getItemList());
+
+ // Item in position 0 is condition card, which payload should not be null
+ assertThat(callback.getChangePayload(0, 0)).isNotEqualTo(null);
+ }
+
+ @Test
+ public void testPayload_ItemNotConditionCard_returnNull() {
+ final DashboardData.ItemsDataDiffCallback callback = new DashboardData
+ .ItemsDataDiffCallback(
+ mDashboardDataWithOneConditions.getItemList(),
+ mDashboardDataWithOneConditions.getItemList());
+
+ // Only item in position 0 is condition card, so others' payload should be null
+ for (int i = 1; i < mDashboardDataWithOneConditions.getItemList().size(); i++) {
+ assertThat(callback.getChangePayload(i, i)).isEqualTo(null);
+ }
+
+ }
+
/**
* Test when using the
* {@link com.android.settings.dashboard.DashboardData.ItemsDataDiffCallback}