android RecyclerView删除单个条目时发生数组越界 IndexOutOfBoundsException

起因是博主先删除了RecyclerView里position==2的条目,然后再删除原本position==3的条目,就发生了数组越界报错。理由是onBindViewHolder方法中的position参数是不会根据你删除一个条目后动态改变的。原来列表有4个条目,0,1,2,3,我删除了2之后,这个回调中最后一个条目的position还是等于3,因此你再去调用list.remove方法时就会报数组越界错误。

解决方法:

将你传递的position改为viewHolder.getAdapterPosition就可以了,viewHolder.getAdapterPosition返回的是当前在适配器中条目的真实序号,你删除条目之后这个序号是会刷新的,上面的例子中,当你删除position==2的条目之后,原本position==3的条目的adapterPosition会变成2,因此删除时不会发生数组越界。

发布了73 篇原创文章 · 获赞 30 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/yonghuming_jesse/article/details/105533740