RecyclerView java.lang.IndexOutOfBoundsException: Inconsistency detected

2,452 阅读1分钟

错误日志


Inconsistency detected. Invalid view holder adapter positionViewHolder{7eaa753 position=4 id=-1, oldPos=-1, pLpos:-1 no parent} android.support.v7.widget.RecyclerView{94aa402 GFE...... ......ID 36,0-930,102 #7f090554 app:id/mRecyclerView}, adapter:com.yanjing.yami.ui.live.im.adapter.CueWordsAdapter@540527f, layout:com.yanjing.yami.common.widget.recycleview.WrapContentLinearLayoutManager@2c0024c, context:android.view.ContextThemeWrapper@b3d8218

android.support.v7.widget.RecyclerView$Recycler.validateViewHolderForOffsetPosition(RecyclerView.java:5610)

原因

如果绑定的 List 对象在更新数据之前进行了 clear,而这时用户紧接着迅速上滑 RecyclerView,就会造成崩溃,而且异常不会报到我们的代码上,属于RecyclerView内部错误。这就是当 clear 了 list 之后,这时迅速上滑,此时新数据还没到来,就会导致 RecyclerView 要更新加载下面的 Item 时候,找不到数据源了,造成 crash。

解决方案

捕捉异常,查看设置数据源的地方是否合理