DiffUtils.dispatchUpdatesTo(adapter)
不更新recyclerView
中我的数组的大小
我的result
的大小大于当前itemList
的大小,但仅显示当前大小
如何通过DiffUtils
显示数组大小的变化?我认为使用notifyDatasetChanged()
是不正确的。
这是我现在在适配器中执行的操作:
fun update(items: List<ITEM>) {
updateAdapterWithDiffResult(calculateDiff(items))
}
private fun updateAdapterWithDiffResult(result: DiffUtil.DiffResult) {
result.dispatchUpdatesTo(this)
}
private fun calculateDiff(newItems: List<ITEM>) =
DiffUtil.calculateDiff(DiffUtilCallback(itemList, newItems))
最佳答案
您的列表大小没有更新,因为您没有在项目列表中添加新项目
像这样更新您的代码-
class YourAdapter(
private val itemList: MutableList<ITEM>
) : RecyclerView.Adapter<YourAdapter.ViewHolder>() {
.
.
.
fun updateList(newList: MutableList<ITEM>) {
val diffResult = DiffUtil.calculateDiff(
DiffUtilCallback(this.itemList, newList))
itemList.clear()
itemList.addAll(newList)
diffResult.dispatchUpdatesTo(this)
}
}
希望它对您有用。