Реализации RecyclerView обычно имеют следующий подход:
- создайте RecyclerAdapter, содержащий набор данных или ссылку на него, например. Список
- прикрепить адаптер и LayoutManager к RecyclerView
- вызовите setItems (или эквивалент) на адаптере, чтобы обновить содержимое
- опционально добавьте нумерацию страниц + бесконечную прокрутку, чтобы иметь возможность постепенно загружать больше контента маленькими кусочками за раз
Это использует мощь RecyclerView и ViewHolder для эффективного отображения огромных наборов данных. Однако это не решает проблему хранения набора данных в памяти, о чем мой вопрос.
Представьте, что у меня есть 1 миллион элементов в моем наборе данных, и я реализовал нумерацию страниц + бесконечную прокрутку. Если я на последней странице, чтобы RecyclerView мог отображать элементы, нам пришлось бы хранить все 1 миллион элементов в списке в адаптере и использовать этот список с соответствующими методами RecyclerAdapter.
Есть ли более эффективный способ сделать это? Мои первоначальные мысли состояли в том, чтобы иметь какой-то подход, основанный на скользящем окне, где мы будем хранить фиксированное количество страниц в памяти и иметь двустороннюю бесконечную реализацию прокрутки, где окно следующей/предыдущей страницы обновляется по мере изменения области просмотра прокрутки, в то время как пользовательские прокрутки. Не уверен, что это повлияет на производительность прокрутки...