У меня есть RecyclerView внутри фрагмента. Я использую привязку данных и компонент навигации. Моя проблема в том, что когда я go возвращаюсь к предыдущему фрагменту с помощью стрелки назад или просто перемещаюсь назад, и после этого я снова открываю фрагмент, где у меня есть RecyclerView, последний элемент все еще будет там, но список полностью пустой.
Я вызываю этот метод, когда закрываю и открываю фрагмент с помощью RecyclerView.
fun removeAllItems()
{
listOfItems.clear()
notifyItemRangeRemoved(0, listOfItems.lastIndex)
}
Я также пытался notifyDataSetChanged (), но все же у меня возникает та же проблема.
Есть идеи, почему это происходит?
Спасибо.
РЕДАКТИРОВАТЬ: Наконец-то я смог решить проблему. Метод onCreate ():
private lateinit var listItemAdapter: ListItemAdapter
listItemAdapter = ListItemAdapter(context, mutableListOf<ListItem>())
Log.d(TAG, "Size_4: ${listItemAdapter.itemCount}")
listItemAdapter.removeAllItems()
binding.rvCreateNewListFourthItem.apply {
layoutManager = LinearLayoutManager(context)
adapter = listItemAdapter
}
Log.d(TAG, "Size_6: ${listItemAdapter.itemCount}")
Результаты: Размер_4: 0 Результаты: Размер_6: 0
После этих строк у меня есть только 2 setOnClickListeners, который открывает 2 других диалога.
override fun onResume()
{
super.onResume()
Log.d(TAG, "Size_3: ${listItemAdapter.itemCount}")
listItemAdapter.removeAllItems()
Log.d(TAG, "Size_5: ${listItemAdapter.itemCount}")
}
Результаты: Размер_3: 1 Результаты: Размер_5: 0
Решением было вызвать метод removeAllItems () на адаптере. Когда фрагмент достиг метода onResume (), список содержал последний элемент из последнего сеанса.