使用多种项目类型构建列表

您可以使用包含多种项目类型的列表来显示混合内容类型,例如文本、图像和交互式元素。

版本兼容性

此实现要求您的项目 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 会为给定内容类型的每个项目重复使用已渲染的可组合项。

结果

Code output showing audio and text messages
图 1. 代码输出,显示了音频和文本消息。

包含本指南的合集

本指南包含在这些精选的快速指南合集中,涵盖了更广泛的 Android 开发目标

通过列表和网格,您的应用可以以视觉效果良好且易于用户查看的形式显示合集。
了解可组合函数如何让您轻松创建基于 Material Design 设计系统的精美 UI 组件。
本系列视频介绍了各种 Compose API,快速展示了可用的 API 以及如何使用它们。

有问题或反馈?

前往我们的常见问题解答页面,了解快速指南,或者与我们联系并告诉我们您的想法。