RecyclerView прокручивает до элемента, который был виден первым после вызова submitList () - PullRequest
0 голосов
/ 28 мая 2019

Когда мы используем 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 методами, и решение этой проблемы не применимо.

...