Với tính năng tải lười và Paging, bạn có thể hỗ trợ các danh sách lớn các mục (bao gồm cả danh sách vô hạn) trong ứng dụng bằng cách tải và hiển thị dữ liệu tăng dần. Kỹ thuật này cho phép bạn giảm thời gian tải ban đầu và tối ưu hoá mức sử dụng bộ nhớ, qua đó nâng cao hiệu suất.
Khả năng tương thích của phiên bản
Phương thức triển khai này yêu cầu bạn phải đặt minSDK của dự án thành API cấp 21 trở lên.
Phần phụ thuộc
Hiển thị nội dung được phân trang
Với thư viện Paging, bạn có thể tải và hiển thị các trang dữ liệu của một tập dữ liệu lớn hơn được lấy từ bộ nhớ cục bộ hoặc qua mạng. Sử dụng mã sau đây để hiển thị danh sách phân trang có thanh tiến trình cho người dùng biết rằng hệ thống đang tìm nạp thêm dữ liệu:
@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) } } } }
Các điểm chính về mã
LazyColumn
: Thành phần kết hợp này được dùng để hiển thị một danh sách lớn các mục (thông báo) một cách hiệu quả. Phương thức này chỉ hiển thị các mục hiển thị trên màn hình, nhờ đó tiết kiệm tài nguyên và bộ nhớ.- Đối tượng
lazyPagingItems
quản lý hiệu quả việc tải và hiển thị dữ liệu được phân trang trongLazyColumn
. Phương thức này truyềnLazyPagingItems
đếnitems
trong thành phần kết hợpLazyColumn
. MessageRow(message: Text)
chịu trách nhiệm hiển thị từng mục tin nhắn, có thể hiển thị người gửi và văn bản của tin nhắn trong một Thẻ.MessagePlaceholder()
cung cấp phần giữ chỗ trực quan (vòng quay đang tải) trong khi dữ liệu tin nhắn thực tế đang được tìm nạp, giúp nâng cao trải nghiệm người dùng.
Kết quả
Video sau đây cho thấy hành vi kết quả của một danh sách lớn tìm nạp dữ liệu khi người dùng cuộn.
Các bộ sưu tập chứa hướng dẫn này
Hướng dẫn này là một phần của các bộ sưu tập Hướng dẫn nhanh được tuyển chọn này, bao gồm các mục tiêu phát triển Android rộng hơn:
![](https://developer.android.google.cn/static/images/quick-guides/collection-illustration.png?hl=vi)
Hiển thị danh sách hoặc lưới
![](https://developer.android.google.cn/static/images/quick-guides/collection-illustration.png?hl=vi)
Hiển thị các thành phần tương tác
![](https://developer.android.google.cn/static/images/quick-guides/collection-illustration.png?hl=vi)