具体情况:
我的需求是一个展示图片的Recyclview.
当我同时删除2个图片的时候就会出现数组越界异常.
如果我一个一个删除,就不会出现.
分析一下基本就能想到.Adapter的notifyDataSetChanged出现了问题.
发现这段
public final int getAdapterPosition() {
if (mOwnerRecyclerView == null) {
return NO_POSITION; //这个常量就是-1.
}
return mOwnerRecyclerView.getAdapterPositionFor(this);
}
解决办法1:(治标)
在xml里面RecyclerView标签加上
android:splitMotionEvents="false"
禁止当前容器多点触摸.
如果app没有多点触摸需求,可以设置Theme
<itemname="android:splitMotionEvents">false</item>
来禁止掉这个功能,
解决办法2:(治本)
不要使用getAdapterPosition()
在adapter里面改用getLayoutPosition();来拿到position
发现个bug做个日记.
另外吐槽一下,hongyang的base-adapter里的MultiItemTypeAdapter还是getAdapterPosition().哈哈