我正在比较两个列表以找到它们之间的差异使用自定义实现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"