java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid view holder adapter positionGoodsViewHolder{883183d position=18 id=-1, oldPos=-1, pLpos:-1 no parent} androidx.recyclerview.widget.RecyclerView{a78a70d VFED..... .......D 0,0-1080,1872 #7f080190 app:id/recycler_view}, adapter:com.taoke.adapter.Goods3Adapter@95346c2, layout:androidx.recyclerview.widget.StaggeredGridLayoutManager@4106cd3, context:com.taoke.StoreSearchActivity@3920cf1
出现上面问题,先从manager说起 StaggeredGridLayoutManager,一般是因为recyclerview的数据错乱导致的,比如有很多地方需要更新recycle view的数据,更新会清除之前的数据,也就是要对数据进行clear一下,然后在加载数据。出错原因也就在这儿,因为clear过后,manager里面可能还没有发生改变。所以后面滑动recycleview的时候导致了数据错乱。 解决方法就是:在clear过后马上就更新一下adapter即可。如:
lists.clear();//清理数据 adapter.notifyDataSetChanged();//直接更新adapter,将残留数据杀掉 initData(isGaiBain,visibility,1,fl, 1, refreshLayout);//在加载新数据