我目前正在使用hasStableIds
的回收站视图,并且有以下发现:
1)当hasStableIds = false
:
notifyDataSetChanged()
,它将使所有视图变脏并再次回收它们,因此将为每个项目调用onCreateViewHolder()
和onBindViewHolder()
。 2)当hasStableIds = true
时:
notifyDataSetChanged()
被调用,它将检查ID,然后决定是否为recyclerView项创建viewHolder。如果数据集未更改,则它将仅再次调用onBindViewHolder()
,而不会再次调用onCreateViewHolder()
。因此,按照上述行为,我感到困惑的是,是否应该始终将我们的recyclerview与hasStableIds = true
一起使用,以便避免再次创建视图持有者?还是有任何特定条件要使用它?
答案 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应该相同。 这可以避免适配器通知更改或执行任何位置操作时突然闪烁
警告!,除非您知道列表项/内容在更新过程中不会更改,否则不建议这样做。