Mit Lazy Loading und Paging können Sie große Listen mit Elementen – einschließlich einer unendlichen Liste – in Ihrer App unterstützen, indem Sie Daten schrittweise laden und anzeigen. So lassen sich die anfänglichen Ladezeiten verkürzen und die Arbeitsspeichernutzung optimieren, was die Leistung verbessert.
Versionskompatibilität
Für diese Implementierung muss das minSDK Ihres Projekts auf API-Level 21 oder höher festgelegt sein.
Abhängigkeiten
Seitenbasierte Inhalte anzeigen
Mit der Paging-Bibliothek können Sie Seiten mit Daten aus einem größeren Datensatz laden und anzeigen, der aus dem lokalen Speicher oder über ein Netzwerk abgerufen wurde. Mit dem folgenden Code können Sie eine paginated_list mit einer Fortschrittsanzeige anzeigen, die dem Nutzer signalisiert, dass weitere Daten abgerufen werden:
@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) } } } }
Wichtige Punkte zum Code
LazyColumn
: Mit diesem Composeable können Sie eine große Liste von Elementen (Nachrichten) effizient anzeigen. Es werden nur die Elemente gerendert, die auf dem Bildschirm sichtbar sind, wodurch Ressourcen und Arbeitsspeicher gespart werden.- Das
lazyPagingItems
-Objekt verwaltet das Laden und Darstellen von paginaten Daten innerhalb desLazyColumn
effizient. Es gibtLazyPagingItems
anitems
imLazyColumn
-Kompositelement weiter. MessageRow(message: Text)
ist für das Rendern einzelner Nachrichtenelemente verantwortlich. Wahrscheinlich werden der Absender und der Text der Nachricht auf einer Karte angezeigt.MessagePlaceholder()
zeigt einen visuellen Platzhalter (eine Ladeanimation) an, während die tatsächlichen Nachrichtendaten abgerufen werden, was die Nutzerfreundlichkeit erhöht.
Ergebnisse
Im folgenden Video wird das resultierende Verhalten einer großen Liste gezeigt, bei der Daten beim Scrollen des Nutzers abgerufen werden.
Sammlungen, die diesen Leitfaden enthalten
Dieser Leitfaden ist Teil der folgenden ausgewählten Sammlungen von Kurzanleitungen, die allgemeinere Ziele der Android-Entwicklung abdecken: