RecyclerView的数据随机变化的问题

Posted

技术标签:

【中文标题】RecyclerView的数据随机变化的问题【英文标题】:The problem that the data of RecyclerView changes randomly 【发布时间】:2021-12-27 00:38:54 【问题描述】:

(图 1 和图 2)


(图 3)


我目前使用的是Epoxy library,而不是RecyclerView。 但是,由于Epoxy是在RecyclerView的基础上构建的,所以我们就叫它RecyclerView吧。

问题 1。 (图 1 和图 2)

当我在RecyclerView itemEditText 中输入值后返回另一个屏幕时,输入的数据会随机移动。

问题 2。 (图 3)

在添加足够的items 可以滚动后,我还将值输入到EditText 中。 如果我向下滚动并返回,数据将移动到一个随机位置。

请告诉我是什么原因,什么是正确的解决方案。

【问题讨论】:

RecyclerView 回收视图。如果您没有在键入时将 EditText 的文本备份到模型项数据并将其恢复到 onBindView,那么您只会看到上次回收时视图中的先前文本。我不使用 Epoxy,但这个问题似乎解决了如何在 Epoxy 中执行此操作:github.com/airbnb/epoxy/issues/426 抱歉,我不确定 git 链接的内容与我的问题有什么关系 这正是您想要做的。将 EditText 更改反馈到模型中,以便它们在滚动离开并返回时保持不变。开发人员对如何做的解释看起来很复杂。我不使用环氧树脂。当您的 RecyclerView 中有交互式小部件时,它可能不是一个好工具。通过浏览 Epoxy 文档,如果您有多种视图类型和数据绑定,它看起来会有所帮助,但否则会使事情比 ListAdapter 复杂得多。它确实早于 ListAdapter。此外,现在还有 ConcatAdapter 可以轻松组合列表类型。 我的意思是,我不明白那个链接中的问题本身。这个问题的答案似乎与我想问的相似,但我不明白这个问题本身.. 【参考方案1】:

确保您正确地覆盖了getItemViewTypegetItemIdgetItemCount

【讨论】:

以上是关于RecyclerView的数据随机变化的问题的主要内容,如果未能解决你的问题,请参考以下文章

如何解决这个rec ylerview问题?我的代码中有任何错误吗?在应用程序中唱歌后运行时崩溃

当 RecyclerView 为空时,CollapsingToolbarLayout 不应折叠

如何使 RecyclerView 与 Composable ViewHolder 渲染更快?

为啥 RecyclerView 项目在 GridLayoutManager 中随机移动位置?

Android RecyclerView 项目在滚动时随机播放

Android RecyclerView详解及实现瀑布流式布局