Если это один файл JSON и его невозможно разделить на отдельные мелкие файлы, то лучший способ, о котором я могу подумать, это:
- Показать заполнительили загрузка, пока вы извлекаете данные (очевидно, извлекаете данные в фоновом потоке)
- Сохраняйте их локально (для этой цели я предлагаю использовать Room, совместимый с Rx и Paging Library)
Используя библиотеку подкачки передать данные из локальной БД в ваш список (используйте recyclerView
вместо простого listView
)
Вы можете добавить Diff Utils , поэтому управление элементами в списке будет «более плавным»
Очевидно, что лучше всего не загружать один большой JSON файл, а извлекать данныекогда пользователь собирается достичь нижней части списка или показать «загрузку в списке», которая не блокирует пользователя.Таким образом, он не будет заблокирован в течение длительного времени.