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

使用AsyncListDiffer提交相同的列表,但是回收器视图总是自动滚动到顶部

王云
2023-03-14

我尝试使用AsyncListDifferent提交相同的列表,但recycler视图总是自动滚动到顶部。当我调试时,我看到recyclerview在调用AreItems之前的submitList后自动滚动到顶部。调用相同的方法

class TestPlaceAdapter(
    private val itemClickCallback: (TestPlaceUi) -> Unit
) : RecyclerView.Adapter<TestPlaceAdapter.ItemViewHolder>() {

    private val differ = AsyncListDiffer(this, DiffCallback())
    private val listTest = mutableListOf<TestPlaceUi>()

    fun setData(listPlace: List<TestPlaceUi>) {
        if (listTest.size == 0) {
            listTest.addAll(listPlace)
            differ.submitList(listTest)
        } else {
            val test = mutableListOf<TestPlaceUi>().apply {
                addAll(listTest)
            }
            differ.submitList(test)
        }
    }

    private class DiffCallback : DiffUtil.ItemCallback<TestPlaceUi>() {
        override fun areItemsTheSame(oldItem: TestPlaceUi, newItem: TestPlaceUi): Boolean {
            return oldItem.id == newItem.id
        }

        override fun areContentsTheSame(oldItem: TestPlaceUi, newItem: TestPlaceUi): Boolean {
            return oldItem == newItem
        }
    }
    ...
 }

TestPlaceUi是数据类,并且不会覆盖等于和hashcode。

共有1个答案

岳浩宕
2023-03-14

我发现我的错误是由使用skeleton的另一个第三方造成的。它会将适配器重置为recyclerview。

 类似资料:
  • 在其他回收器视图中有一个回收器视图。两者都需要垂直滚动。外部回收器视图滚动正常,但内部回收器视图滚动不正常。 这是代码: ViewAdapter如下: 我尝试了以下两种回收商观点,但都无法解决问题 也尝试了这个:

  • 我正在使用下面的代码创建一个回收器视图。recyclerview有一个网格布局管理器,其项计数最多为每行2个。 不幸的是,我嵌套在ConstraintLayout中的回收器视图根本没有滚动。我错过了什么?约束布局是否支持相同的?

  • 编辑:我的问题是ListView有没有比RecyclerView更有优势的地方?如果不是,那么为什么谷歌没有将它标记为贬值。此外,虽然我们可以在库中找到ListView,但如果我们创建了一个新的Project,但要使用RecyclerView,则必须使用另一个依赖项。

  • 问题内容: 在此之前,我的滚动视图下面几乎有一个值得滚动的页面,下面有一个列表视图,但是一旦填充了列表视图,滚动视图就会移到列表视图的顶部。我该如何解决/防止这种情况发生? 滚动查看XML: 我试着做sv.fullScroll(ScrollView.FOCUS_UP); 和所有这些东西到我的scrollview,但它不起作用 问题答案: 首先,您可能已经听说过它,但以防万一: 切勿在内部放一个,因

  • 我最近使用了HikariCP。在我使用自己的简单连接池来满足我们的需求之前。在我们的软件中,有时我们需要执行多个数据库插入,其中每个插入都取决于一些验证。或多或少与此网站的样本相似:http://docs.oracle.com/javase/tutorial/jdbc/basics/transactions.html#commit_transactions 在我的旧方法中,当我使用自己的conn池

  • 我有回收站视图与数据,当它在底部与此代码它将加载新数据。我的问题是当它加载一个新的数据时,它将滚动回到顶部。我如何让它在同一个地方而不滚动? 我已经尝试在加载数据函数中安装了这个 但它仍然会向后滚动。请帮忙