我的RecyclerView中的项目结构如下:
Index | Item
0. Header Item
1. 0. Data
2. 1. Data
3. 2. Data
4. 3. Data
[....]我的数据库会自动将更新分派到RecyclerView。当使用DiffUtil和我删除我的数据库中索引3处的项时,DiffUitl Dispatcher正在删除索引2处的项。我认为这是由于DiffUtil dispatcher不知道我的项目被“偏移”了一个索引。我该如何解决这个问题呢?
发布于 2020-07-29 14:18:11
您可以尝试使用DiffUtil.DiffResult.dispatchUpdatesTo(ListUpdateCallback),实现自定义ListUpdateCallback
示例:
private class CustomListUpdateCallback(val adapter: RecyclerView.Adapter<*>) : ListUpdateCallback {
override fun onChanged(position: Int, count: Int, payload: Any?) {
adapter.notifyItemRangeChanged(position + 1, count, payload)
}
override fun onMoved(fromPosition: Int, toPosition: Int) {
adapter.notifyItemMoved(fromPosition + 1, toPosition + 1)
}
override fun onInserted(position: Int, count: Int) {
adapter.notifyItemRangeInserted(position + 1, count)
}
override fun onRemoved(position: Int, count: Int) {
adapter.notifyItemRangeRemoved(position + 1, count)
}
}https://stackoverflow.com/questions/58530464
复制相似问题