我有一个从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将保持在相同的位置