Android 之 RecyclerView 连续移除Item报错

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jing85432373/article/details/51980774

直接进入正题,RecyclerView 创建多个Item项,然后移除调用notifyItemRemoved()

1.从最后一项移除,不会报错

2.从第一项开始依次移除,也不会报错

3.从中间项开始随意移除,然后  删除 后面的项,数组越界


原因:调用notifyItemRemoved(int  pos)后,会移除pos项,并有动画效果,有动画效果就果断不用notifyDataSetChanged()了,但是发生一个不幸的事情

@Override
public void onBindViewHolder(final LotSetHolder holder, final int pos)
Android系统并没有帮我们设置 pos 属性,也就是本来10个元素,当移除2个后(都不是最后一个),最后一个元素的 pos还是9,

解决方案:每次调用notifyItemRemoved()后都需要调用notifyItemRangeChanged(int positionStart, int itemCount)方法,
开始位置-->不用考虑就是移除的元素
itemCount-->总个数(移除后的)- 开始位置


猜你喜欢

转载自blog.csdn.net/jing85432373/article/details/51980774
今日推荐