添加值时使用notifyItemRangeChanged / Inserted / Removed

时间:2017-06-22 17:29:32

标签: android android-recyclerview

如果我的RecyclerView中有10个项目:

Indexes: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9

我删除索引2处的那个,并在其位置插入2个项目,如下所示:

data.remove(2);
data.add(2, object);
data.add(3, object);

我会从notifyItemRangeChanged / notifyItemRangeInserted / notifyItemRangeRemoved中调用哪些方法,以及我会在其中添加哪些值?

2 个答案:

答案 0 :(得分:0)

根据文档,需要进行以下调用:

  • 1st:notifyItemRemoved(2)
  • 2nd:notifyItemInserted(2,2)

对notifyItemInserted()的单次调用不会这样做,因为:(来自文档)

  

以前位于positionStart及以后的项目现在可以从位置positionStart + itemCount开始找到。

这不是必需的。

答案 1 :(得分:0)

取决于您正在添加项目视图类型的值... 如果方法getItemViewType()返回相同的值,则可以调用notifyItemChanged(2); notifyItemInserted(3) 如果不是,您应该对数据操作执行相同的操作:notufyItemRemoved(2); notifyItemRangeInserted(2,2); 据我所知,不需要放任何数据(有效载荷)