Avec le chargement paresseux et Paging, vous pouvez prendre en charge de grandes listes d'éléments (y compris une liste infinie) dans votre application en chargeant et en affichant les données de manière incrémentielle. Cette technique vous permet de réduire les temps de chargement initiaux et d'optimiser l'utilisation de la mémoire, ce qui améliore les performances.
Compatibilité des versions
Cette implémentation nécessite que la version minimale du SDK de votre projet soit définie sur le niveau d'API 21 ou supérieur.
Dépendances
Afficher du contenu paginé
Avec la bibliothèque Paging, vous pouvez charger et afficher des pages de données depuis un ensemble de données plus volumineux, à partir d'un espace de stockage local ou sur réseau. Utilisez le code suivant pour afficher une liste paginée qui affiche une barre de progression pour indiquer à l'utilisateur que d'autres données sont en cours d'extraction:
@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) } } } }
Points clés concernant le code
LazyColumn
: ce composable permet d'afficher efficacement une longue liste d'éléments (messages). Il n'affiche que les éléments visibles à l'écran, ce qui permet d'économiser des ressources et de la mémoire.- L'objet
lazyPagingItems
gère efficacement le chargement et la présentation des données paginées dansLazyColumn
. Il transmetLazyPagingItems
àitems
dans le composableLazyColumn
. MessageRow(message: Text)
est responsable de l'affichage des éléments de message individuels, qui affichent probablement l'expéditeur et le texte du message dans une carte.MessagePlaceholder()
fournit un espace réservé visuel (un voyant de chargement) pendant la récupération des données de message réelles, ce qui améliore l'expérience utilisateur.
Résultats
La vidéo suivante montre le comportement d'une grande liste qui extrait des données lorsque l'utilisateur fait défiler l'écran.
Collections contenant ce guide
Ce guide fait partie de ces collections de guides rapides sélectionnées qui couvrent des objectifs de développement Android plus larges:
![](https://developer.android.google.cn/static/images/quick-guides/collection-illustration.png?hl=fr)
Afficher une liste ou une grille
![](https://developer.android.google.cn/static/images/quick-guides/collection-illustration.png?hl=fr)
Afficher des composants interactifs
![](https://developer.android.google.cn/static/images/quick-guides/collection-illustration.png?hl=fr)