Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0cbb338e authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Add payload for condition card to reuse the viewholder"

parents dbac5f1b 022d4476
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -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;
         }
    }

    /**
+25 −0
Original line number Diff line number Diff line
@@ -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}