我在RecyclerView中的项目结构如下:
Index | Item
0. Header Item
1. 0. Data
2. 1. Data
3. 2. Data
4. 3. Data
[....]
我的数据库自动将更新调度到RecyclerView。 当我使用DiffUtil时,我在索引3中删除了项目。在我的数据库中,索引2中的项目被DiffUitl Dispatcher删除了。我认为这是由于DiffUtil调度程序不知道我的项目被一个索引“偏移”了。我该如何解决?
答案 0 :(得分:0)
您可以尝试使用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)
}
}