Dzięki opóźnionemu wczytywaniu i przewijaniu możesz obsługiwać w swojej aplikacji duże listy elementów, w tym nieskończone, wczytując i wyświetlając dane stopniowo. Ta technika umożliwia skrócenie początkowego czasu wczytywania i zoptymalizowanie wykorzystania pamięci, co poprawia wydajność.
Zgodność wersji
Ta implementacja wymaga, aby minimalna wersja pakietu SDK projektu była ustawiona na poziom API 21 lub wyższy.
Zależności
Wyświetlanie treści podzielonych na strony
Dzięki bibliotece stron możesz wczytywać i wyświetlać strony danych z większego zbioru danych uzyskanego z pamięci lokalnej lub przez sieć. Aby wyświetlić pogrupowaną listę z paskiem postępu, który informuje użytkownika, że pobierane są kolejne dane, użyj tego kodu:
@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) } } } }
Najważniejsze informacje o kodzie
LazyColumn
: ta kompozycja służy do efektywnego wyświetlania dużej listy elementów (wiadomości). Renderuje tylko elementy widoczne na ekranie, co pozwala oszczędzać zasoby i pamięć.- Obiekt
lazyPagingItems
efektywnie zarządza wczytywaniem i prezentacją przepagedowanych danych w ramachLazyColumn
. Przekazuje wartośćLazyPagingItems
do funkcjiitems
w komponowalnym komponencieLazyColumn
. MessageRow(message: Text)
odpowiada za renderowanie poszczególnych elementów wiadomości, prawdopodobnie wyświetlając nadawcę i tekst wiadomości na karcie.MessagePlaceholder()
wyświetla wizualny element zastępczy (animowaną ikonę ładowania), podczas gdy pobiera rzeczywiste dane wiadomości, co poprawia wrażenia użytkownika.
Wyniki
Na filmie poniżej widać, jak pobieranie danych z dużej listy wpływa na działanie aplikacji podczas przewijania przez użytkownika.
Kolekcje zawierające ten przewodnik
Ten przewodnik należy do tych kolekcji krótkich przewodników, które obejmują szersze zagadnienia związane z tworzeniem aplikacji na Androida:
![](https://developer.android.google.cn/static/images/quick-guides/collection-illustration.png?hl=pl)
Wyświetlanie listy lub siatki
![](https://developer.android.google.cn/static/images/quick-guides/collection-illustration.png?hl=pl)
Wyświetlanie komponentów interaktywnych
![](https://developer.android.google.cn/static/images/quick-guides/collection-illustration.png?hl=pl)