Я использую общий RecycledViewPool между некоторыми фрагментами. Я решил попробовать MergeAdapter
в одном фрагменте. Для этого экрана я создал отдельный адаптер для каждого viewType и переопределил метод getItemViewType
для возврата идентификатора макета в качестве типа представления.
Когда я go на любом другом экране, который имеет общий доступ к RecycledViewPool, но не использует MergeAdapter
Я вижу некоторые из viewHolders с предыдущего экрана. Когда я возвращаюсь назад, происходит сбой приложения, и в логах я вижу ClassCastException
, говорящий, что ViewHolder1
нельзя преобразовать в ViewHolder2
.
Мой код выглядит следующим образом:
recyclerView.setRecycledViewPool(sharedViewPool)
val adapter = MergeAdapter(adapter1, adapter2, adapter3, adapter4)
recyclerView.adapter = adapter
Как сохранить общий RecycledViewPool, но исключить ClassCastException
и прекратить показывать ViewHolders на других экранах, где они не должны отображаться?