关于RecyclerView自实现点击事件出现的坑

2016-12-18  本文已影响0人  Jlanglang

具体情况:

我的需求是一个展示图片的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().哈哈

上一篇下一篇

猜你喜欢

热点阅读