使用多种项类型构建列表

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

结果

显示音频和文本消息的代码输出
图 1.显示音频和文本消息的代码输出。

版本兼容性

此实现要求您的项目 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 设计 系统的精美界面组件。
此系列视频介绍了各种 Compose API, 可让您快速了解可用的 API 及其使用方法。

有疑问或反馈吗?

前往我们的常见问题解答页面,了解有关快速指南的信息;或者联系我们并告知您的想法。