Как оставаться на том же месте в окне просмотра вторсырья даже после получения обновленных данных из магазина Firestore

#android #kotlin #android-recyclerview

Вопрос:

У меня есть список элементов в a RecyclerView , который был извлечен из Firestore базы данных. Всякий раз, когда я добавляю, удаляю или редактирую элемент, я вызываю соответствующую функцию для внесения изменений в Firestore него, а затем вызываю getProductListFromFireStore() ее для обновления RecyclerView . Но проблема, с которой я сталкиваюсь, заключается в том, что каждый раз, когда я вношу эти изменения, я попадаю в начало списка. Я хочу оставаться там, где был, даже после добавления/удаления или редактирования. Как я могу это сделать?

Раньше notifyDataSetChanged() в моем коде этого не было, это было добавлено, чтобы проверить, справится ли это с работой, я не знаю, правильно ли я это сделал.

Следующая функция вызывается, когда список продуктов успешно извлечен из Firestore

 fun successProductsListFromFireStore(productsList: ArrayListlt;Productgt;) {  hideProgressDialog()   if (productsList.size gt; 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  } }  

Ответ №1:

Я думаю, вам нужно использовать диффузию. Он автоматически обновляет только измененные элементы, и если хотя бы один элемент на экране не был изменен, то u останется на том же месте