DiffUtil - 如何在更新之前保留旧列表

时间:2017-12-20 23:17:00

标签: java android android-recyclerview

我正在尝试使用DiffUtil来更新RecyclerView。我有一个类DataProvider,它是一个单独的类,它包含包含Objects的List。

每次我需要更新RecyclerView时,我都会修改DataProvider中的列表。现在当我尝试使用以{2}作为参数的DiffUtil时,我不再拥有旧的List了,因为我更新了它。

在更新之前保留旧版List的最佳方法是什么,以便我可以比较它们并在RecyclerView上执行所需的更新,而无需致电notifyDataSetChanged()?< / p>

1 个答案:

答案 0 :(得分:2)

请参阅此答案:https://stackoverflow.com/a/47522246/8298909

我知道您提出了一个不同的问题,但我链接的答案中的两个代码段几乎正是您正在寻找的内容:DiffUtil.Callback的简单实现和示例即使您直接修改支持适配器的数据源,也可以使用它。

关键是在执行更改之前使用new ArrayList<>([your data here])创建预修改列表的(临时)副本。