当前位置: 首页 > 知识库问答 >
问题:

带有废弃或附加视图的GapWorker可能不会被回收。isSght: false isAttated: true

富钧
2023-03-14

当我滚动我的回收器视图太快时,我得到以下崩溃

 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上得到了类似的问题,但是没有一个像下面的链接一样有帮助,

链接1

链接2

链接3

链接4

链接5

我不知道这次崩溃是从哪里发生的。任何帮助将不胜感激。我既没有使用“android:animateLayoutChanges=”true”

基本上,我试图合并这两个不同的GitHub项目,

RV适配器状态

rv适配器无接头

我的文件链接如下,来自pastbin,

行布局

recyclerview代码

我的适配器由rv的两个不同适配器合并而成

主适配器

共有3个答案

花阳辉
2023-03-14

在我的例子中,问题是因为这个方法的不正确实现public long getItemId(int位置)(从RecyclerView.Adapter方法覆盖)。

代码将为同一项(在我的例子中是页脚项)获得两个不同的ID,在修复了实现之后,问题就消失了。

拓拔泓
2023-03-14

你试过layoutManager.setItemPrefetchEnabled(false);吗?它对我有用。

赏阳嘉
2023-03-14

我有同样的问题,我不知道为什么会发生。

我解决了它,删除了回收器视图上的android:animateLayoutChanges,并对我添加的回收器视图进行了动画处理:recyclerView.setItemAnimator(new DefaultItemAnimator());

创建一个帐户来添加方法公共长getItemId(int position),并设置setHasStableIds(true)如果你想给它添加动画。

 类似资料:
  • 致命异常:主进程:com.zipato.android.client.v2,PID:24966 java.lang.IllegalArgumentException:废弃或附加的视图可能无法回收。isScrap:false isAttached:true at android.support.v7.widget.RecyclerView$Recycler.recycleViewHolderInte

  • 我使用的是一个从Android网站上获得的的简单实现,使用的是一个,但我不断收到这个导致我的应用崩溃的错误: 所谓简单,我的字面意思是,它是从他们网站上的这个页面上获得的相同实现,唯一的区别是我的网格项的布局是一个和两个,所以我不会麻烦重新发布我的代码。 还有谁知道这个错误并知道如何处理它?

  • 我在里面使用了。我还将设置为false for 支持较低的API

  • 我想添加一个headerview,当用户向下滚动时隐藏,当用户向上滚动时再次显示。 例子:https://imgur.com/a/tTq70B0 正如你在链接中看到的“你写的是……”pharase仅在用户滚动到顶部时显示。Android sdk中有类似的东西吗? 我怎样才能做到同样的事?

  • Node.js may deprecate APIs when either: (a) use of the API is considered to be unsafe, (b) an improved alternative API has been made available, or (c) breaking changes to the API are expected in a fut

  • 问题内容: 有什么方法可以保证应用程序不会在Oracle中释放行锁吗?如果我确保将commit语句放在finally块中,则可以处理意外错误的情况,但是如果应用程序进程在提交前突然中断(或者有人将电源线/局域网电缆拔出),该怎么办。 有没有办法让Oracle在X时间后自动回滚空闲会话?还是在我以某种方式检测到连接丢失时回滚? 根据我所做的实验,如果我在提交某个应用程序进程之前终止了该进程,则行锁将