1

现在我在我的项目中发现了一个错误

val diffCallback = diff.newInstance(list, newList)
val diffResult = DiffUtil.calculateDiff(diffCallback)
list.clear()
list.addAll(newList)
diffResult.dispatchUpdatesTo(this)

这是我在适配器中的差异代码,您可以看到我清除了旧列表并更新了新列表。

但我在视图中使用数据并在视图中使用它设置标签。

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

当我删除时list.clear() list.addAll(newList),差异无法成功,有人可以告诉我为什么吗?我该如何解决这个问题?

4

0 回答 0