RecyclerView刷新异常java.lang.IndexOutOfBoundsException

来源:互联网 发布:寻找客源的软件 编辑:程序博客网 时间:2024/06/06 03:18

使用RecyclerView下拉刷新发现异常崩溃,异常如下:

java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid view holder adapter positionViewHolder{13e04da position=8 id=-1, oldPos=-1, pLpos:-1 no parent}                                                                at android.support.v7.widget.RecyclerView$Recycler.validateViewHolderForOffsetPosition(RecyclerView.java:5297)                                                                at android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:5479)                                                                at android.support.v7.widget.GapWorker.prefetchPositionWithDeadline(GapWorker.java:282)                                                                at android.support.v7.widget.GapWorker.flushTaskWithDeadline(GapWorker.java:336)                                                                at android.support.v7.widget.GapWorker.flushTasksWithDeadline(GapWorker.java:349)                                                                at android.support.v7.widget.GapWorker.prefetch(GapWorker.java:356)                                                                at android.support.v7.widget.GapWorker.run(GapWorker.java:387)                                                                at android.os.Handler.handleCallback(Handler.java:739)                                                                at android.os.Handler.dispatchMessage(Handler.java:95)                                                                at android.os.Looper.loop(Looper.java:148)                                                                at android.app.ActivityThread.main(ActivityThread.java:5417)                                                                at java.lang.reflect.Method.invoke(Native Method)                                                                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)                                                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

问题分析

网上搜索解决方案大多说是adapter的list刷新数据后没有调用notirfyDataSetChanged()通知adapter,检查代码后发现果然有一处

adapter.getData().clear();

解决方案

更新list数据后及时调用notifyDataSetChanged方法

adapter.getData().clear();adapter.notifyDataSetChanged();
阅读全文
0 0
原创粉丝点击