diff --git a/src/com/android/settings/dashboard/DashboardData.java b/src/com/android/settings/dashboard/DashboardData.java index 0fc994b268a..147f39ea9ec 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 class DashboardData { 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 52c2103cd9d..abea5653482 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 @@ public class DashboardDataTest { 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}