Итак, в настоящее время я поддерживаю усилия по разработке приложения для Android, которое ранее разрабатывалось совершенно другой группой разработчиков.
В рамках моих постоянных усилий по поддержке мы повысили TargetSdkVersion с 23 до 28и, соответственно, все зависимости и библиотеки поддержки, а также библиотеки appcompat.
Однако с обновлением библиотеки recyclerview мы начали замечать особую проблему с включенной реализацией Infinite Scrolling для RecyclerView вПриложение.
Наблюдается следующее.
Запустите приложение.Перейдите к любому действию, фрагменту или представлению, на котором размещен RecyclerView.
Прокрутка вверх.Нажмите на любую карту, отображаемую в RecyclerView.Запустит новое действие или фрагмент с подробной информацией внутри этой карты.
Вернитесь назад, закройте существующее представление «Подробная информация».
В версии 28 RecyclerView просто возвращается, показывая с начала прокрутки.Представление не выполняет автоматическую прокрутку или что-либо еще, оно представляет собой только самый первый элемент.
В версии 23 RecyclerView сохранил предыдущее состояние, как в наборе дочерних элементов, которыебыл отображен до нажатия на карточку и запуска нового действия, фрагмента или вида, что было отображено без каких-либо изменений или автоматических прокруток.
Худшая часть, v28, ничего не будетсохранить состояние RecyclerView.Например, вызов LayoutManager.onSaveInstanceState () в onPause (), сохранение его в качестве Parcelable и применение его в onResume () в качестве LayoutManager.onRestoreInstanceState (состояние Parcelable) не будет работать.В противном случае LayoutManager.findFirstVisibleItemPosition (), за которым следует вычисление firstVisibleItemPositionOffset в onPause () и использование их обоих в LayoutManager.smoothScrollWithOffset в onResume (), ни одна из стратегий не работает.
GridLayoutManager не работает и не сохраняет состояние в RecyclerView-v7: 28.0.0?
Какая была последняя версия, когда RecyclerView сохранял свое состояние между действиями и окнами и даже изменениями ориентации?