С помощью отложенной загрузки и Paging вы можете поддерживать большие списки элементов, включая бесконечный список, в своем приложении, загружая и отображая данные постепенно. Этот метод позволяет сократить время начальной загрузки и оптимизировать использование памяти, повышая производительность.
Результаты
В следующем видео показано, как работает большой список, который получает данные по мере прокрутки.
Совместимость версий
Для этой реализации требуется, чтобы в вашем проекте minSDK был установлен на уровне API 21 или выше.
Связанные запросы
Как показывать контент, разбитый на страницы
С помощью библиотеки Paging вы можете загружать и отображать страницы данных из более крупного набора данных, полученного из локального хранилища или по сети. Используйте следующий код, чтобы отобразить разбитый на страницы список, в котором отображается индикатор выполнения, указывающий пользователю, что извлекается больше данных:
@Composable fun MessageList( modifier: Modifier, pager: Pager<Int, Message> ) { val lazyPagingItems = pager.flow.collectAsLazyPagingItems() LazyColumn { items( lazyPagingItems.itemCount, key = lazyPagingItems.itemKey { it.id } ) { index -> val message = lazyPagingItems[index] if (message != null) { MessageRow(message) } else { MessagePlaceholder() } } } @Composable fun MessagePlaceholder(modifier: Modifier) { Box( Modifier .fillMaxWidth() .height(48.dp) ) { CircularProgressIndicator() } } @Composable fun MessageRow( modifier: Modifier, message: Message ) { Card(modifier = Modifier.padding(8.dp)) { Column( modifier = Modifier.padding(8.dp), verticalArrangement = Arrangement.Center ) { Text(message.sender) Text(message.text) } } } }
Важные сведения о коде
LazyColumn. Эта composable-функция используется для эффективного отображения большого списка элементов (сообщений). Он отображает только те элементы, которые видны на экране, тем самым экономя ресурсы и память.- Объект
lazyPagingItemsэффективно управляет загрузкой и представлением постраничных данных вLazyColumn. Она передаетLazyPagingItemsвitemsв composable-функцииLazyColumn. MessageRow(message: Text)отвечает за отображение отдельных сообщений, вероятно, показывая отправителя и текст сообщения на карточке.MessagePlaceholder()предоставляет визуальный плейсхолдер (индикатор загрузки), пока извлекаются фактические данные сообщения, что улучшает пользовательский опыт.
Подборки, в которые входит это руководство
Это руководство входит в следующие коллекции кратких руководств, посвященных более широким целям разработки для Android:
Показать список или сетку
Показ интерактивных компонентов