当我滚动我的recyclerview太快时,我得到了以下崩溃
java.lang.IllegalArgumentException: Scrapped or attached views may not be recycled. isScrap:false isAttached:true
at android.support.v7.widget.RecyclerView$Recycler.recycleViewHolderInternal(RecyclerView.java:5659)
at android.support.v7.widget.RecyclerView$Recycler.recycleView(RecyclerView.java:5603)
at android.support.v7.widget.GapWorker.prefetchPositionWithDeadline(GapWorker.java:277)
at android.support.v7.widget.GapWorker.flushTaskWithDeadline(GapWorker.java:324)
at android.support.v7.widget.GapWorker.flushTasksWithDeadline(GapWorker.java:337)
at android.support.v7.widget.GapWorker.prefetch(GapWorker.java:344)
at android.support.v7.widget.GapWorker.run(GapWorker.java:370)
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)
我已经尝试了我的所有努力,并在stackoverflow上得到了类似的问题,但没有一个像下面的链接那样有用,
我不知道发生这种情况的崩溃。任何帮助将不胜感激。我既不使用" android:animateLayoutChanges =" true"
基本上我曾尝试合并这两个不同的GitHub项目,
我的文件链接如下所示,来自pastbin,
答案 0 :(得分:2)
我遇到了同样的问题,我不知道为什么会这样。
我解决了删除recyclerview上的android:animateLayoutChanges
并为我添加的recyclelerview设置动画:
recyclerView.setItemAnimator(new DefaultItemAnimator());
如果您想为其设置动画,请使用帐户添加方法public long getItemId(int position)
并设置setHasStableIds(true)
。
答案 1 :(得分:1)
你试过layoutManager.setItemPrefetchEnabled(false);
吗?它对我有用。
答案 2 :(得分:0)
就我而言,问题是由于此方法public long getItemId(int position)
的执行不正确(从RecyclerView.Adapter
方法覆盖)。
旧代码将为同一个项目获取两个不同的ID(在我的情况下,它是页脚项目),在修复实现后问题已经消失。