Android RecyclerView DiffUtil需要手动更新数据?;

Android RecyclerView DiffUtil需要手动更新数据?;,android,android-recyclerview,android-diffutils,Android,Android Recyclerview,Android Diffutils,现在我在我的项目中发现了一个bug val diffCallback = diff.newInstance(list, newList) val diffResult = DiffUtil.calculateDiff(diffCallback) list.clear() list.addAll(newList) diffResult.dispatchUpdatesTo(this) 这是适配器中的差异代码,您可以看到我清除旧列表并更新新列表 但我在viewholder中使用数据,并在视图中设置标

现在我在我的项目中发现了一个bug

val diffCallback = diff.newInstance(list, newList)
val diffResult = DiffUtil.calculateDiff(diffCallback)
list.clear()
list.addAll(newList)
diffResult.dispatchUpdatesTo(this)
这是适配器中的差异代码,您可以看到我清除旧列表并更新新列表

但我在viewholder中使用数据,并在视图中设置标记

当我将旧数据设置为视图中的标记时,我会区分列表,因为这个diffUtil返回true,所以视图也会处理其标记中的旧数据,但我总是在区分时更新适配器列表,所以当我使用
adapter.list.getindex(data)
时,我得到-1,因为视图标记是旧数据,我的适配器列表必须更新新列表,即使旧列表数据视图==新列表

当我删除
list.clear()list.addAll(newList)
时,差异无法成功, 有人能告诉我为什么吗?我怎样才能解决这个问题呢