RecyclerView使用Viewholder数组越界。

 java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid view holder adapter positionViewHolder{8159d6d position=13 id=-1, oldPos=1, pLpos:1 scrap [attachedScrap] tmpDetached no parent}

app有一个需求,在使用SwipeRefreshLayout下拉刷新数据,清空原有的数据,重新请求数据,并刷新列表。

使用的时候碰到报数组越界异常,没有标识异常的定位,然后开始排错

List<***> datas=new Arraylist<>();

后来想到,Recyclerview使用的时候,数据不能直接datas.clear(),之后重新在datas里面添加新的数据。然后进行刷新。

错误的地方就在于,刷新的时候,我是

adapter.notifyItemRangeInserted(datas.size() - storiesBeen.size(), datas.size() - 1);
在调用datas.clear();之后,要进行

adapter.notifyDataSetChanged();
先将清楚后的数据刷掉,否则直接添加过数据后,刷新的范围,并不是原来的数量,就会报错。

记录,以备之后犯蠢。




你可能感兴趣的:(自写,android,recyclerview,viewholder,数组越界)