Con la carga diferida y Paging, puedes admitir listas grandes de elementos, incluida una lista infinita, en tu app cargando y mostrando datos de forma incremental. Esta técnica te permite reducir los tiempos de carga iniciales y optimizar el uso de la memoria, lo que mejora el rendimiento.
Compatibilidad de versiones
Esta implementación requiere que el minSDK de tu proyecto se establezca en el nivel de API 21 o superior.
Dependencias
Cómo mostrar contenido paginado
Con la biblioteca de Paging, puedes cargar y mostrar páginas de datos de un conjunto de datos más grande que se adquirió desde el almacenamiento local o a través de una red. Usa el siguiente código para mostrar una lista paginada que muestre una barra de progreso para indicarle al usuario que se están recuperando más datos:
@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) } } } }
Puntos clave sobre el código
LazyColumn
: Este elemento componible se usa para mostrar una gran lista de elementos (mensajes) de manera eficiente. Solo renderiza los elementos que son visibles en la pantalla, lo que ahorra recursos y memoria.- El objeto
lazyPagingItems
administra de manera eficiente la carga y presentación de datos paginados dentro deLazyColumn
. PasaLazyPagingItems
aitems
en el elemento componibleLazyColumn
. MessageRow(message: Text)
es responsable de renderizar elementos de mensajes individuales, lo que probablemente muestre el remitente y el texto del mensaje dentro de una tarjeta.MessagePlaceholder()
proporciona un marcador de posición visual (un ícono giratorio de carga) mientras se recuperan los datos reales del mensaje, lo que mejora la experiencia del usuario.
Resultados
En el siguiente video, se muestra el comportamiento resultante de una lista grande que recupera datos mientras el usuario se desplaza.
Colecciones que contienen esta guía
Esta guía forma parte de estas colecciones de guías rápidas seleccionadas que abarcan objetivos más amplios de desarrollo de Android:
![](https://developer.android.google.cn/static/images/quick-guides/collection-illustration.png?hl=es-419)
Cómo mostrar una lista o una cuadrícula
![](https://developer.android.google.cn/static/images/quick-guides/collection-illustration.png?hl=es-419)
Cómo mostrar componentes interactivos
![](https://developer.android.google.cn/static/images/quick-guides/collection-illustration.png?hl=es-419)