У меня есть ParentData
класс, структурированный следующим образом:
class ParentData(
//parent data fields
var childList: List<ChildData>
Я заполняю родительский RecylerView списком ParentData
, а затем заполняю каждый вложенный дочерний RecyclerView со встроенным List<ChildData>
вonBindViewHolder
родительского адаптера RecylerView (ListAdapter) примерно так:
val mAdapter = ChildAdapter()
binding.childRecyclerView.apply {
layoutManager = LinearLayoutManager(this.context)
adapter = mAdapter
}
mAdapter.submitList(item.childList)
//item from getItem(position)
Я наблюдаю LiveData<List<ParentData>>
, поэтому каждый раз, когда изменяется встроенный ChildData
, я отправляю новый List<ParentData>
своему родителюrecycler, который, в свою очередь, вызывает OnBindViewHolder
и отправляет новый `childList 'и обновляет внутренний дочерний RecyclerView.
Проблема заключается в том, что val mAdapter = ChildAdapter()
вызывается при каждом обновлении данных, сбрасывая весь дочерний RecyclerView.Это приводит к тому, что анимация добавления элементов отсутствует, а положение прокрутки сбрасывается.
Есть ли способ избежать инициализации нового адаптера каждый раз или каким-либо другим способом избежать сброса дочерних RecyclerViews?