我正在尝试使用DiffUtil
来更新RecyclerView
。我有一个类DataProvider
,它是一个单独的类,它包含包含Objects的List。
每次我需要更新RecyclerView
时,我都会修改DataProvider
中的列表。现在当我尝试使用以{2}作为参数的DiffUtil
时,我不再拥有旧的List
了,因为我更新了它。
在更新之前保留旧版List
的最佳方法是什么,以便我可以比较它们并在RecyclerView
上执行所需的更新,而无需致电notifyDataSetChanged()
?< / p>
答案 0 :(得分:2)
请参阅此答案:https://stackoverflow.com/a/47522246/8298909
我知道您提出了一个不同的问题,但我链接的答案中的两个代码段几乎正是您正在寻找的内容:DiffUtil.Callback
的简单实现和示例即使您直接修改支持适配器的数据源,也可以使用它。
关键是在执行更改之前使用new ArrayList<>([your data here])
创建预修改列表的(临时)副本。