RecyclerView使用notifyItemRemoved错乱

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

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

解决办法

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

猜你喜欢

转载自blog.csdn.net/qq_19707091/article/details/78329100