RecyclerView使用notifyItemRemoved错乱

探讨了RecyclerView在使用notifyItemRemoved方法时可能导致的问题及解决方案。当仅使用notifyItemRemoved方法时,可能会出现Item位置错乱的情况,文章提供了正确的操作顺序来避免此类问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题
RecyclerView直接调用notifyItemRemoved(position)移除指定位置的item,第一次没问题,当你滑动或者再次删除是就会报异常导致奔溃。

原因
因为notifyItemReomoved只是把对应的position的Item给移除掉,下面的已经显示的Item向上平移而已,并未重新调用onBindViewHolder方法重新绑定数据,当你再次操作其中的数据时,就会出现Item的position错位(已显示的Item还是原来删除之前position的值)。

解决办法

先remove,再notifyItemRemoved, 最后再notifyItemRangeChanged
remove:把数据从list中remove掉, notifyItemRemoved:显示动画效果
notifyItemRangeChanged:对于被删掉的位置及其后range大小范围内的view进行重新onBindViewHolder

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值