Android 之 RecyclerView 连续移除Item报错

直接进入正题,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-->总个数(移除后的)- 开始位置


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

仲少

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值