Add payload for condition card to reuse the viewholder
Bug: 30319913 Test: make RunSettingsRoboTests Change-Id: Ib08a301203f4075f0553386f7db1a68d69bde436
This commit is contained in:
@@ -16,6 +16,7 @@
|
|||||||
package com.android.settings.dashboard;
|
package com.android.settings.dashboard;
|
||||||
|
|
||||||
import android.annotation.IntDef;
|
import android.annotation.IntDef;
|
||||||
|
import android.support.annotation.Nullable;
|
||||||
import android.support.v7.util.DiffUtil;
|
import android.support.v7.util.DiffUtil;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import com.android.settings.dashboard.conditional.Condition;
|
import com.android.settings.dashboard.conditional.Condition;
|
||||||
@@ -350,6 +351,15 @@ public class DashboardData {
|
|||||||
public boolean areContentsTheSame(int oldItemPosition, int newItemPosition) {
|
public boolean areContentsTheSame(int oldItemPosition, int newItemPosition) {
|
||||||
return mOldItems.get(oldItemPosition).equals(mNewItems.get(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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -196,6 +196,31 @@ public class DashboardDataTest {
|
|||||||
testDiffUtil(mDashboardDataWithOneConditions, mDashboardDataWithNoItems, testResultData);
|
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
|
* Test when using the
|
||||||
* {@link com.android.settings.dashboard.DashboardData.ItemsDataDiffCallback}
|
* {@link com.android.settings.dashboard.DashboardData.ItemsDataDiffCallback}
|
||||||
|
Reference in New Issue
Block a user