【问题标题】:Does hasStableIds and getItemId have any significance if DiffUtil is used?如果使用 DiffUtil,hasStableIds 和 getItemId 有什么意义吗?
【发布时间】:2019-07-30 06:35:36
【问题描述】:

我们使用DiffUtil.CalculateDiff 和自定义DiffUtil.Callback 来处理对基础数据的更改。

  • 我们元素的身份相当复杂,这就是我们在areContentsTheSame 和areItemsTheSame 中使用自定义相等检查的原因。

  • 但是,适配器有两个东西hasStableIds和getItemId。

问题是getItemId 返回一个long 并且我们元素的身份不能以稳定的方式合并为long(尽管考虑到我们在 diffutil 回调中的自定义相等检查,否则稳定。

问题是这样的:

在这种情况下如何处理 hasStableIds 和 getItemId 以及当 DiffUtil 将更改推送到适配器时是否使用它们?

【问题讨论】:

标签: android android-recyclerview identity android-diffutils


【解决方案1】:

我不知道马厩在后台实际做了什么,但它用于保持元素有序并删除任何错误的东西。

【讨论】:

  • 感谢您的回复,但不幸的是它并没有太大帮助。关键是:我知道使用常规 notifyDataSetChanged 与适配器一起使用时 hasStableIds 会做什么。但我的问题特别是在使用 diffutil 时是否需要或是否使用。
猜你喜欢
  • 1970-01-01
  • 2011-03-03
  • 1970-01-01
  • 2011-10-06
  • 2016-09-16
  • 2010-09-23
  • 2015-12-03
  • 2019-10-18
  • 1970-01-01
相关资源
最近更新 更多