Jin*_*Jin 5 android android-recyclerview
我遇到了RecyclerView#Adapter关于问题的问题notifyItemRangeChanged.似乎如果Adapter认为它具有0从最后一次调用的大小getItemCount,然后我调用Adapter#notifyItemRangeChanged(0, 1),Adapter则将简单地忽略该调用(例如,它不会导致插入新项目).
这是预期的行为吗?
MH.*_*MH. 17
这是预期的行为吗?
简短回答:是的.
从文档开始notifyDataSetChanged()(是的,不同的方法,我知道,但只是在这里引用它,因为它解释了项目更改和结构更改之间的区别):
有两种不同类别的数据更改事件,项目更改和结构更改.项目更改是指单个项目的数据更新但未发生位置更改.结构更改是指在数据集中插入,移除或移动项目的时间.
现在阅读文档notifyItemRangeChanged()(我的重点):
这是一个项目更改事件,而不是结构更改事件.它表示给定位置范围内的任何数据反映都已过期,应予以更新.给定范围内的项目保留相同的标识.
这应该回答你的问题.你正在做一个结构变化(即,您要添加的项目),因此notifyItemRangeChanged()是不正确的方法来调用.相反,你应该调用notifyItemRangeInserted()(或它的单数等价物),这表明结构发生了变化.