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