Последний элемент RecyclerView остается видимым на макете - PullRequest
0 голосов
/ 25 апреля 2020

У меня есть 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 (), список содержал последний элемент из последнего сеанса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...