您可以使用包含多种项目类型的列表来显示混合内容类型,例如文本、图像和交互式元素。
版本兼容性
此实现要求您的项目 minSDK 设置为 API 级别 21 或更高。
依赖项
添加多种项目类型
组合包含多种项目类型的列表或网格时,您可以为布局的每个项目指定内容类型。
@Composable fun ListWithMultipleItems(messages: List<Any>) { LazyColumn { items( messages.size, contentType = { it } ) { for (message in messages) when (message) { is MediaStore.Audio -> AudioMessage(message) is Text -> TextMessage(message) } } } } @Composable fun AudioMessage(message: MediaStore.Audio) { TODO("Not yet implemented.") } @Composable fun TextMessage(message: Text) { TODO("Not yet implemented.") } data class SampleMessage(val text: String, val content: Any)
关于代码的关键点
- 通过在
items()
中设置contentType
来指定每个项目的内容类型。 - 将每个内容类型映射到相应的可组合项。例如,
Audio
是在其他地方定义的contentType
,并映射到AudioMessage
可组合项。 - Compose 会重用为给定内容类型的每个项目渲染的可组合项。
结果
包含本指南的集合
本指南是涵盖更广泛 Android 开发目标的精选快速指南集合的一部分。
显示列表或网格
列表和网格允许您的应用以用户易于理解的直观形式显示集合。
显示交互式组件
了解可组合函数如何让您轻松创建基于 Material Design 设计系统的精美 UI 组件。
Compose 基础知识(视频集合)
本系列视频介绍了各种 Compose API,快速向您展示可用的功能以及如何使用它们。
有问题或反馈?
访问我们的常见问题页面,了解快速指南,或联系我们,让我们知道您的想法。