У меня есть RecyclerView.Adapter
с hasStableIds(true);
и LinearLayoutManager
с reverseLayout(true);
Я вставляю новый элемент в список объектов в адаптере, затем вызываю NotifyItemInserted(0)
. Список переворачивается и загружается снизу вверх, а new item
всегда внизу.
Проблема заключается в том, что при вызове NotifyItemInserted
все ViewHolders «обновлены» / «перезагружены» / «воссозданы» - виджеты немного сложны и не хотят, чтобы все они создавались заново каждый раз.
Когда я отлаживаю решение, OnBindViewHolder
начинается с позиции 0 (что правильно), затем поднимается до позиции 10 или 11 в зависимости от того, сколько элементов на экране, воссоздавая их все.
Я испробовал множество различных настроек на adapter
, layoutmanager
и на самом recyclerview
, которые ни один из них не работает.
Я вижу, что есть полезная нагрузка, которая может быть передана в NotifyItemChanged
, но не в NotifyItemInserted
. Может быть, с полезной нагрузкой я могу проверить, есть ли элемент уже на экране и не воссоздавать его снова, я не знаю, что делать.
Я использую Xamarin.Android, но это не должно быть проблемой здесь.