通过懒加载和分页,您可以通过增量加载和显示数据来支持应用中的大型项目列表(包括无限列表)。此技术使您可以减少初始加载时间并优化内存使用率,从而提高性能。
版本兼容性
此实现要求您的项目 minSDK 设置为 API 级别 21 或更高。
依赖项
显示分页内容
使用分页库,您可以从本地存储或网络获取的大型数据集中加载和显示数据页。使用以下代码显示分页列表,该列表显示进度条以向用户指示正在获取更多数据
@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) } } } }
代码要点
LazyColumn
:此可组合项用于高效地显示大型项目(消息)列表。它仅呈现屏幕上可见的项目,从而节省资源和内存。- 该
lazyPagingItems
对象有效地管理LazyColumn
中分页数据的加载和显示。它将LazyPagingItems
传递给items
在LazyColumn
可组合项中。 MessageRow(message: Text)
负责渲染单个消息项目,可能在卡片内显示消息的发送者和文本。MessagePlaceholder()
在实际消息数据正在获取时提供视觉占位符(加载微调器),从而增强用户体验。
结果
包含本指南的集合
本指南是涵盖更广泛 Android 开发目标的这些精选快速指南集合的一部分
显示列表或网格
列表和网格允许您的应用以用户易于理解的直观形式显示集合。
显示交互式组件
了解可组合函数如何使您能够轻松创建基于 Material Design 设计系统的漂亮 UI 组件。
Compose 基础知识(视频集合)
本系列视频介绍了各种 Compose API,快速向您展示可用的内容以及如何使用它们。
有问题或反馈?
访问我们的常见问题页面,了解快速指南,或与我们联系,让我们知道您的想法。