Как обновить данные во вложенном дочернем RecyclerView без потери анимации / инициализации нового адаптера? - PullRequest
0 голосов
/ 13 февраля 2019

У меня есть 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?

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