Meh*_*zad 11 android compare list android-recyclerview android-diffutils
areItemsTheSame
为什么需要与areContentsTheSame
at diffutil recyclerview一起使用?我不明白我认为 areItemsTheSame 足以比较数据吗?可以给我更多解释吗?谢谢
Paw*_*wel 16
尽可能短:
areItemsTheSame
- 用于确定新旧列表之间的结构变化(添加/删除/位置更改)
areContentsTheSame
- 确定特定项目是否已更新
如果列表中的对象是不可变的,您可能没有注意到差异,并且可能总是返回true
,areContentsTheSame
但何时可以更新您的项目确实很重要。
DiffUtil.ItemCallback有 3 个方法是有原因的。假设您正在比较两个对象:
Movie A rated at 5 stars
Movie A rated at 4 stars
Run Code Online (Sandbox Code Playgroud)
当计算 diff 时,会进行以下调用:
areItemsTheSame
:检查两个对象是否代表相同的项目(电影 A),返回 trueareContentsTheSame
:检查内容是否相同(星级),否则返回 falsegetChangePayload
areContentsTheSame
:返回 false时调用。它是一个可选覆盖,可用于返回有效负载对象以进行ViewHolder 的部分更新。在此示例中,它可以返回4
(星号)。