【发布时间】:2021-10-03 15:44:13
【问题描述】:
我想用 diffUtils 更新列表项,但是在我用 diffDiffUtils 设置列表后,如下所示:
val coinsDiffUtil = DataDiffUtilCallBack(itemList, newData)
val diffUtilResult = DiffUtil.calculateDiff(coinsDiffUtil)
itemList = ArrayList(newData)
diffUtilResult.dispatchUpdatesTo(this)
diff util 不会更新 recyclerView 项目,所以我使用这样的函数:
fun updateItem(item: Model) {
val index = itemList.indexOfFirst {
it.id == item.id
}
itemList[index].enabled = item.enabled
notifyItemChanged(index)
}
【问题讨论】:
-
使用 ListAdapter 作为 RecyclerView 的适配器。您将 DiffUtil 回调传递给它的构造函数。然后,您需要做的就是在适配器上调用
submitList,每次发生变化时使用新的数据列表,它会自动更新 RecyclerView。
标签: android kotlin android-recyclerview android-diffutils