必须在notifyItemInserted之后调用

时间:2017-08-04 21:31:20

标签: android

在RecyclerView.Adapter中调用notifyItemRangeChanged后必须调用notifyItemInserted吗? 在SO上有很多例子,他们总是在notifyItemInserted之后调用notifyItemRangeChanged,但我不确定这是否正确?如果这是正确的,那么解释是什么?你不需要调用notifyItemRangeChanged会是什么情况,否则它将成为notifyItemInserted的一部分?

2 个答案:

答案 0 :(得分:0)

没有规则,因为一种方法应始终先于另一种方法。

如果添加了新项目,请致电notifyItemInserted。如果项目已更改,请致电notifyItemRangeChanged

如果添加了一些项目并且某些项目已更改,则必须将两个方法作为参数调用各自的位置。您可以按任何顺序调用方法,但根据顺序,动画和您必须传递给方法的位置可能会发生变化。

答案 1 :(得分:0)

基于RecyclerView的文档:

  

有两类不同的数据更改事件,项目更改结构更改项目更改是指单个项目的数据已更新但未发生位置更改的情况。 结构更改在数据集中插入,移除或移动项时

notifyItemInserted

是结构变化事件

notifyItemRangeChanged

是项目更改事件

  

你不需要打电话的情况是什么?   notifyItemRangeChanged,否则它将成为其中的一部分   notifyItemInserted?

好吧,notifyItemRangeChanged时无需始终致电notifyItemInserted,因为它们都有不同的用途。

以简单的方式,如果您向现有适配器的数据集添加新的行/数据,那么您应该调用notifyItemInserted

如果您在适配器的数据集中批量修改某些数据,而无需添加,移动或删除适配器的数据集内容,请致电notifyItemRangeChanged。对于单项更改,请使用notifyItemChanged