Blog Alphorm Logo de blog informatique spécialisé en technologie et solutions IT
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
En cours de lecture : LazyRow et LazyColumn dans Jetpack Compose
Agrandisseur de policeAa
Blog AlphormBlog Alphorm
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
Search
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
Suivez-nous
© Alphorm 2024 - Tous droits réservés
Développement

LazyRow et LazyColumn dans Jetpack Compose

L'Équipe Alphorm Par L'Équipe Alphorm 18 janvier 2025
Partager
Partager

La gestion de grandes listes dans les applications Android peut consommer beaucoup de mémoire.

Cela peut entraîner des performances médiocres et une expérience utilisateur frustrante.

LazyRow et LazyColumn de Jetpack Compose offrent une solution en affichant uniquement les éléments visibles.

Table de matière
LazyRow et LazyColumn : IntroductionLazyRow et LazyColumn : Concepts clésCréer des Items avec LazyRow/ColumnDéfilement et Interaction avec LazyListAffichage d'Articles avec LazyColumnConclusion sur LazyRow/Column AndroidConclusionFAQConclusion

Formation Créer une Interface Utilisateur Moderne avec JetPack Compose

Créez des interfaces modernes et réactives avec JetPack Compose!

Découvrir cette formation

LazyRow et LazyColumn : Introduction

LazyRow et LazyColumn : Concepts clés

Jetpack Compose propose des outils puissants pour la création d’interfaces utilisateur modernes et réactives. Parmi ces outils, LazyRow et LazyColumn se distinguent par leur capacité à gérer de grandes listes d’éléments sans pour autant consommer inutilement des ressources. Dans ce document, nous allons explorer en détail ces composants, leurs différences par rapport à Row et Column, et comment les utiliser efficacement dans vos projets Android.

Créer des Items avec LazyRow/Column

Row et Column vs LazyRow et LazyColumn

Caractéristique
LazyColumn
LazyRow
Disposition des Éléments
Colonne (verticale)
Ligne (horizontale)
Construction des Éléments
Paresseuse (lazy)
Paresseuse (lazy)
Performance
Efficace pour longues listes
Efficace pour longues lignes
Défilement
Vertical
Horizontal
Économie de Mémoire
Oui, construit uniquement les éléments visibles
Oui, construit uniquement les éléments visibles
Utilisation Commune
Listes, grilles verticales
Carrousels, lignes d’images
Fonctionnalités Avancées
Supporte des indices d’éléments personnalisés, diviseurs, groupes
Supporte des indices d’éléments personnalisés, diviseurs, groupes
Modifier les Éléments
Facile avec item et items
Facile avec item et items
Prise en Charge des Entêtes/Footeurs
Supporte avec itemsIndexed et des éléments conditionnels
Supporte avec itemsIndexed et des éléments conditionnels

Les composants Row et Column sont utilisés pour organiser les éléments enfants en lignes et colonnes respectivement. Cependant, ces composants affichent tous leurs enfants en même temps, ce qui peut poser problème lorsque la liste est longue, car cela consomme beaucoup de mémoire et de ressources.

LazyRow et LazyColumn , en revanche, sont conçus pour résoudre ce problème en n’affichant que les éléments visibles à l’écran. Le préfixe « Lazy » signifie que ces composants sont « paresseux » dans la construction des éléments : ils ne construisent et n’affichent que les éléments qui sont nécessaires pour remplir l’espace visible, tout en rendant possible le défilement pour accéder aux éléments non visibles.

				
					
 LazyColumn(
state = rememberLazyListState()
) {
items(itemsList) { item ->
ListItem(item)
}
}

				
			

Défilement et Interaction avec LazyList

Items et ItemsIndexed

Dans LazyColumn et LazyRow , les items peuvent être définis de deux manières principales :

Diagramme LazyColumn avec items et itemsIndexed
  • items :Permet de créer un item pour chaque élément d’une liste.
  • itemsIndexed :Similaire à items, mais fournit également l’index de chaque item.
				
					
 LazyColumn {
itemsIndexed(itemsList) { index, item ->
ListItem(item, index)
}
}

				
			

Cette approche est utile lorsque vous avez besoin de l’index d’un item, par exemple, pour alterner le style en fonction de la position ou pour des animations spécifiques.

Remember Lazy List State

Pour gérer l’état de défilement et interagir avec les éléments visibles, rememberLazyListState est utilisé. Cette fonction mémorise l’état de la liste et permet d’accéder à des informations comme le premier élément visible ou de contrôler le défilement.

				
					
 val listState = rememberLazyListState()

				
			

Affichage d'Articles avec LazyColumn

Récupération d’informations sur le Scroll

L’état de défilement peut être utilisé pour savoir quel élément est actuellement visible. Par exemple, vous pouvez détecter si le premier élément est visible et afficher un bouton pour permettre à l’utilisateur de revenir en haut de la liste.

Schéma coroutines et boutons Jetpack Compose
				
					
 val firstVisibleItemIndex = listState.firstVisibleItemIndex
if (firstVisibleItemIndex > 0) {
Button(onClick = {
coroutineScope.launch {
listState.animateScrollToItem(0)        }
}) {
Text("Scroll to top")    }}

				
			

Voici la sortie du code :

Exemple LazyColumn avec bouton scroll to top

Animer le Scroll

Question : Comment peut-on utiliser des coroutines pour animer le défilement d’une liste vers le haut lorsqu’un bouton est cliqué dans Jetpack Compose ?

L’animation du défilement est possible en utilisant des coroutines. Voici comment créer un bouton qui fait défiler la liste vers le haut lorsqu’il est cliqué :

				
					
 val coroutineScope = rememberCoroutineScope()
Button(onClick = {
coroutineScope.launch {
listState.animateScrollToItem(0)
}
}) {
Text("Scroll to top")
}

				
			
Élément
Description
CoroutineScope
Scope pour lancer des coroutines lié au cycle de vie du composant.
Button
Composant déclencheur d’action au clic.
onClick
Action exécutée lors du clic du bouton.
coroutineScope.launch
Lancement d’une coroutine pour des tâches asynchrones.
listState.animateScrollToItem
Méthode pour animer le défilement vers un élément spécifique.
Text
Texte affiché dans le bouton.

Conclusion sur LazyRow/Column Android

Pour illustrer l’utilisation de LazyColumn , prenons l’exemple d’une application affichant une liste d’articles. Chaque article peut être représenté par une image, un titre, une date, etc. Supposons que nous voulons afficher ces articles dans une LazyColumn pour gérer une grande quantité de données efficacement.

Définition de l’Item

Commençons par définir ce à quoi ressemble un article :

				
					
 data class Article(
val title: String,
val date: String,
val image: Painter,
val content: String
)

				
			

Création de la Liste d’Articles

Nous pouvons maintenant créer une fonction ArticleList qui utilise LazyColumn pour afficher tous les articles :

				
					
 @Composable
fun ArticleList(articles: List<Article>) {
val listState = rememberLazyListState()
LazyColumn(state = listState) {
items(articles) { article ->
ArticleItem(article)        }    }}

				
			

Gestion du Scroll avec un Bouton

Ajoutons un bouton pour revenir au premier article lorsque l’utilisateur scrolle vers le bas :

				
					
 @Composable
fun ArticleListScreen(articles: List<Article>) {
val listState = rememberLazyListState()
val coroutineScope = rememberCoroutineScope()
Column {
Button(onClick = {
coroutineScope.launch {
listState.animateScrollToItem(0)
}
}) {
Text("Scroll to top")
}
ArticleList(articles)
}}

				
			

Voici la sortie du code :

Exemple d'affichage avec LazyColumn de Jetpack Compose
Diagramme illustrant LazyColumn en Jetpack Compose

Conclusion

LazyRow et LazyColumn sont des composants essentiels pour créer des interfaces utilisateur réactives et performantes dans Jetpack Compose, surtout lorsque vous travaillez avec de grandes quantités de données. En utilisant ces outils avec des fonctions comme rememberLazyListState, vous pouvez facilement gérer le défilement et améliorer l’expérience utilisateur de vos applications Android.

Formez-vous gratuitement avec Alphorm !

Maîtrisez les compétences clés en IT grâce à nos formations gratuites et accélérez votre carrière dès aujourd'hui.

Démarrer gratuitement
illustration processus de paiement en ligne avec étapes claires et convivialité

FAQ

Qu'est-ce que LazyRow et LazyColumn dans Jetpack Compose ?
LazyRow et LazyColumn sont des composants de Jetpack Compose conçus pour gérer de grandes listes de manière efficace. Contrairement à Row et Column, ces composants n’affichent que les éléments visibles sur l’écran, réduisant ainsi l’utilisation de la mémoire et améliorant les performances des applications Android. Ils permettent un défilement fluide et efficace, essentiel pour les interfaces utilisateur modernes et réactives.
Comment LazyRow et LazyColumn améliorent-ils la performance des applications ?
LazyRow et LazyColumn améliorent la performance des applications en affichant uniquement les éléments visibles à l’écran. Cette approche ‘paresseuse’ minimise la consommation de mémoire et de ressources en ne construisant que les éléments nécessaires. Cela garantit un défilement fluide et rapide, même avec de grandes listes, ce qui est crucial pour l’expérience utilisateur sur Android.
Comment utiliser items et itemsIndexed dans LazyRow et LazyColumn ?
Dans LazyRow et LazyColumn, les items peuvent être définis avec ‘items’ pour créer un élément pour chaque item d’une liste, ou avec ‘itemsIndexed’ qui fournit également l’index de chaque item. Cette distinction permet d’adapter l’affichage des éléments en fonction de leur position, facilitant ainsi des styles alternatifs ou des animations spécifiques pour chaque item.
Pourquoi utiliser rememberLazyListState dans LazyColumn ?
rememberLazyListState est utilisé pour mémoriser l’état de la liste et gérer le défilement dans LazyColumn. Cette fonction permet de savoir quels éléments sont visibles, de contrôler le défilement et d’interagir avec les éléments visibles. Elle est essentielle pour créer des interfaces utilisateur dynamiques et réactives, en permettant des interactions fluides comme le retour à un élément spécifique dans la liste.
Comment animer le défilement dans Jetpack Compose avec LazyColumn ?
Pour animer le défilement dans Jetpack Compose avec LazyColumn, vous pouvez utiliser des coroutines. En créant un bouton qui déclenche une animation, vous pouvez faire défiler la liste vers un élément spécifique, comme le haut de la liste. Cette fonctionnalité est réalisée en utilisant coroutineScope.launch avec la méthode listState.animateScrollToItem, assurant une expérience utilisateur fluide et réactive.

Conclusion

LazyRow et LazyColumn sont des outils puissants dans Jetpack Compose pour créer des interfaces performantes. Quelle autre fonctionnalité de Jetpack Compose aimeriez-vous explorer pour améliorer vos applications Android ?

ÉTIQUETÉ : Android, Jetpack
Facebook
Twitter
LinkedIn
Email
WhatsApp
Par L'Équipe Alphorm
Démocratiser la Connaissance Informatique pour Tous !
Suivre :
L'Équipe Alphorm, c'est la démocratisation de la connaissance informatique. Passionnés et dévoués, nous sommes là pour vous guider vers le succès en rendant la technologie accessible à tous. Rejoignez notre aventure d'apprentissage et de partage. Avec nous, le savoir IT devient une ressource inspirante et ouverte à tous dans un monde numérique en constante évolution.

Derniers Articles

  • Techniques pour gérer les fichiers texte en C#
  • Créer et lire un fichier CSV avec C#
  • JSON : Comprendre et Utiliser Efficacement
  • Créer une Base SQLite dans C#
  • Lecture des données SQLite simplifiée
Laisser un commentaire Laisser un commentaire

Laisser un commentaire Annuler la réponse

Vous devez vous connecter pour publier un commentaire.

Blog Alphorm
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
En cours de lecture : LazyRow et LazyColumn dans Jetpack Compose

© Alphorm - Tous droits réservés