何时为recyclerView使用hasStableIds true?

时间:2019-06-03 11:15:16

标签: android android-recyclerview recycler-adapter

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

1)当hasStableIds = false

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

2)当hasStableIds = true时:

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

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

1 个答案:

答案 0 :(得分:1)

根据文档

Enables adapter publishes a unique Id/value that can act as a key for the item at a given position in recyclerView.

如果该项目已重新放置在数据集中,则为该项目返回的ID应该相同。 这可以避免适配器通知更改或执行任何位置操作时突然闪烁

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

Android hasStableIds