Android RecyclerView устанавливает начальную позицию БЕЗ scrollTo

#java #android #android-recyclerview #adapter

#java #Android #android-recyclerview #адаптер

Вопрос:

Сценарий — я создал пользовательский календарь, используя RecyclerView с помощью FlexboxLayoutManager. RecyclerView снабжен пользовательским адаптером, содержащим список пользовательских данных за последние 2 года (730 дней) и 2 года в будущем (730) = 1461 элемент в списке.

Я хотел бы показать календарь на текущий день — пункт 731. Учитывая большой объем данных, scrollToPosition (731) замораживает пользовательский интерфейс на 3-5 секунд (NOGO).

Каково было бы решение этой проблемы. Многим приложениям удается сделать это мгновенно, включая собственный объект календаря Google. Есть ли простой обходной путь или мне нужно переосмыслить способ загрузки данных?

Ответ №1:

для большого количества элементов recycler вы должны использовать разбивку на страницы для повышения производительности

Комментарии:

1. Спасибо за ответ,. Я всегда понимал, что RecyclerView всегда вел себя как разбивка на страницы, загружая только видимые данные — определенное количество элементов для плавной прокрутки. На самом деле я могу установить данные за 20 лет в адаптер и загрузить RecyclerView в течение 200-500 мс. Он перемещается на определенный день в пределах этого диапазона данных, с которыми у меня возникают проблемы

Ответ №2:

Я попробую следующее решение. Вместо загрузки данных за один день в адаптер я буду загружать месяцы и раздувать дни в элементы месяца. Надеюсь, это сработает, потому что это уменьшит количество элементов на 30. scrollToPosition должно быть относительно быстрым, я думаю