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

Commit 022d4476 authored by jackqdyulei's avatar jackqdyulei
Browse files

Add payload for condition card to reuse the viewholder

Bug: 30319913
Test: make RunSettingsRoboTests
Change-Id: Ib08a301203f4075f0553386f7db1a68d69bde436
parent 301fe80f
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}