Когда мы используем ListAdapter
или RecyclerView.Adapter
с AsyncListDiffer
, мы можем столкнуться со странным поведением после вызова submitList()
- RecyclerView прокручивается до элемента, который изменил свою позицию.
Позвольте мне объяснить это на примере.
У нас есть 5 пунктов в списке: A, B, C, D, E. Пользователь только что открыл экран, видны только A, B и C. Теперь из-за некоторых взаимодействий, элемент перемещается в последнюю позицию, поэтому наш текущий порядок - B, C, D, E, A.
// After init
adapter.submitList(listOf("A", "B", "C", "D", "E")
// After some interaction
adapter.submitList(listOf("B", "C", "D", "E", "A")
Что сейчас странно, так это то, что ReyclerView
прокручивается в конец списка. Но это применимо только тогда, когда первый видимый элемент изменил свою позицию. Например, когда мы изменили порядок на A, C, D, E, B, RecyclerView
не прокручивается.
Я думаю, что это может быть связано с этой проблемой , так как разные могут вызвать notifyItemMoved underhood. К сожалению, в этом случае мы не работаем с notifySomething
методами, и решение этой проблемы не применимо.