在RecyclerView.Adapter中调用notifyItemRangeChanged后必须调用notifyItemInserted吗? 在SO上有很多例子,他们总是在notifyItemInserted之后调用notifyItemRangeChanged,但我不确定这是否正确?如果这是正确的,那么解释是什么?你不需要调用notifyItemRangeChanged会是什么情况,否则它将成为notifyItemInserted的一部分?
答案 0 :(得分:0)
没有规则,因为一种方法应始终先于另一种方法。
如果添加了新项目,请致电notifyItemInserted
。如果项目已更改,请致电notifyItemRangeChanged
。
如果添加了一些项目并且某些项目已更改,则必须将两个方法作为参数调用各自的位置。您可以按任何顺序调用方法,但根据顺序,动画和您必须传递给方法的位置可能会发生变化。
答案 1 :(得分:0)
基于RecyclerView的文档:
有两类不同的数据更改事件,项目更改和结构更改。 项目更改是指单个项目的数据已更新但未发生位置更改的情况。 结构更改在数据集中插入,移除或移动项时。
notifyItemInserted
是结构变化事件
notifyItemRangeChanged
是项目更改事件
你不需要打电话的情况是什么? notifyItemRangeChanged,否则它将成为其中的一部分 notifyItemInserted?
好吧,notifyItemRangeChanged
时无需始终致电notifyItemInserted
,因为它们都有不同的用途。
以简单的方式,如果您向现有适配器的数据集添加新的行/数据,那么您应该调用notifyItemInserted
。
如果您在适配器的数据集中批量修改某些数据,而无需添加,移动或删除适配器的数据集内容,请致电notifyItemRangeChanged
。对于单项更改,请使用notifyItemChanged