Благодаря отложенной загрузке и пейджингу вы можете поддерживать в своем приложении большие списки элементов, в том числе бесконечные, путем постепенной загрузки и отображения данных. Этот метод позволяет сократить время начальной загрузки и оптимизировать использование памяти, повышая производительность.
Совместимость версий
Для этой реализации требуется, чтобы в minSDK вашего проекта был установлен уровень API 21 или выше.
Зависимости
Отображать постраничный контент
С помощью библиотеки подкачки вы можете загружать и отображать страницы данных из более крупного набора данных, полученного из локального хранилища или по сети. Используйте следующий код, чтобы отобразить список с разбивкой на страницы, в котором отображается индикатор выполнения, указывающий пользователю, что извлекается больше данных:
@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
: этот составной элемент используется для эффективного отображения большого списка элементов (сообщений). Он отображает только те элементы, которые видны на экране, тем самым экономя ресурсы и память. - Объект
lazyPagingItems
эффективно управляет загрузкой и представлением постраничных данных вLazyColumn
. Он передаетLazyPagingItems
items
компонуемогоLazyColumn
. -
MessageRow(message: Text)
отвечает за отображение отдельных элементов сообщения, вероятно, отображая отправителя и текст сообщения внутри карты. -
MessagePlaceholder()
предоставляет визуальный заполнитель (индикатор загрузки) во время извлечения фактических данных сообщения, улучшая взаимодействие с пользователем.
Результаты
В следующем видео показано поведение большого списка, извлекающего данные при прокрутке пользователем.
Коллекции, содержащие это руководство
Это руководство является частью тщательно подобранной коллекции быстрых руководств, охватывающих более широкие цели разработки Android: