不同大小的列表上的DiffUtil回调

时间:2017-07-08 06:31:41

标签: android arraylist android-recyclerview

我正在比较两个列表以找到它们之间的差异使用自定义实现DiffUtil回调,但这两个列表具有不同的大小,并且当我在' areItemsTheSame'中的列表中记录要比较的元素时。和' areContentsTheSame'被比较的元素受到具有最少元素的列表的大小的限制,因此当在我的适配器中时,我调用“dispatchUpdatesTo”#39;添加了新项目,但其内容与旧列表中的最后一项相同

实施这些方法:

@Override
public boolean areItemsTheSame(int oldItemPosition, int newItemPosition) {
    return mOldList.get(oldItemPosition).equals(mNewList.get(newItemPosition));
}

@Override
public boolean areContentsTheSame(int oldItemPosition, int newItemPosition) {
    return mOldList.get(oldItemPosition).equals(mNewList.get(newItemPosition));
}

例如:

(旧)列表A =" A"," B"," C"," D"," E& #34;" F"" G"" I"

(新)列表B =" A"," B"," C"," D"," E& #34;" F"" G"" I"" K"

记录后,我发现' areItemsTheSame'和' areContentsTheSame'只比较元素到"我"并因此为所有调用返回true并在调用dispatchUpdatesTo之后将适配器新项目添加到列表中但它是"我"不是" k"

所以我得到的是列表A =" A"," B"," C"," D",&#34 ; E"" F"" G"" I"" I"

0 个答案:

没有答案