如何在RecyclerView中保持相同的位置,即使在从Firestore获取更新的数据之后



我有一个从Firestore数据库获取的RecyclerView中的项目列表。每当我添加,删除或编辑一个项目时,我调用相应的函数来更改Firestore,然后调用getProductListFromFireStore()来更新RecyclerView。但我遇到的问题是,每次我做这些改变时,我都要去列表的顶部。即使在添加/删除或编辑之后,我也希望保持在原来的位置。我该怎么做呢?

我之前没有在我的代码中添加notifyDataSetChanged(),这是为了检查这是否会做这项工作,我不知道我是否做对了。

当成功从Firestore

获取产品列表时,将调用以下函数
fun successProductsListFromFireStore(productsList: ArrayList<Product>) {
hideProgressDialog()
if (productsList.size > 0) {
binding.rvMyProductItems.layoutManager = LinearLayoutManager(activity)
binding.rvMyProductItems.setHasFixedSize(true)
val adapterProducts =
MyProductsListAdapter(requireActivity(), productsList, this@ProductsFragment)
binding.rvMyProductItems.adapter = adapterProducts
adapterProducts.notifyDataSetChanged()
} else {
binding.rvMyProductItems.visibility = View.GONE
binding.tvNoProductsFound.visibility = View.VISIBLE
}
}

我认为你需要使用difftill。它只会自动更新更改的项目,如果屏幕上至少有一个项目没有更改,那么u将保持在相同的位置

相关内容

  • 没有找到相关文章

最新更新