何时将hasStableIds用于recyclerView?

问题描述 投票:2回答:1

我目前正在使用回收站视图的hasStableIds,并且有以下发现:

1)当hasStableIds = false

  • 一旦调用notifyDataSetChanged(),它将使所有视图都变脏并再次回收它们,因此将为每个项目调用onCreateViewHolder()onBindViewHolder()

2)当hasStableIds = true

  • 一旦调用notifyDataSetChanged(),它将检查ID,然后决定是否为recyclerView项创建viewHolder。如果数据集未更改,则它将仅再次调用onBindViewHolder(),而不会再次调用onCreateViewHolder()

因此,根据上述行为,我感到困惑的是,我们是否应该始终将我们的recyclerview与hasStableIds = true一起使用,以便避免再次创建视图持有人?还是有任何特定条件要使用它?

android android-recyclerview recycler-adapter
1个回答
0
投票

根据文档

启用适配器发布一个唯一的ID /值,该ID /值可以用作recyclerView中给定位置的项的键。

如果该项目重新放置在数据集中,则该项目返回的ID应该相同。

这可以避免适配器通知更改或执行任何位置操作时突然闪烁,

警告!,除非您知道列表项/内容在更新期间不会更改,否则不建议这样做。

Android hasStableIds

© www.soinside.com 2019 - 2024. All rights reserved.