java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid item position 18(offset:18).state:72

前段时间,为了对项目中分页加载更新数据封装,出现了一个小bug,就是

java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid item position 18(offset:18).state:72

而且,这是recyclerview内部报出的bug,没有指出我项目中哪里的错,比如下图


java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid item position 18(offset:18).state:72_第1张图片

看了一下我的代码,是这样写的


java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid item position 18(offset:18).state:72_第2张图片

报出这个bug是在我上拉加载更多了一页后,再下拉刷新,也就是listData变小了才会出现

因为涉及到加载图片的时候,如果更新数据用notifyDataSetChanged会导致图片闪烁一下,所以用notifyItemRangeChanged进行局部更新,这里出现的情况是,本身我的recyclerView列表数已经是20个了,这时候下拉刷新,loadPage=1,获取到的listAdd为10个,项目的需求是只要下拉刷新就要把以前的数据清理掉,所以这里的运算结果是listData=10,然后执行notifyItemRangeChanged(0,10)就报错了,稍微改一下就可以了

java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid item position 18(offset:18).state:72_第3张图片

当刷新时用notifyDataSetChanged,增加时用notifyItemRangeChanged,就可以避免这样的问题了

你可能感兴趣的:(java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid item position 18(offset:18).state:72)