使用多种项类型构建列表

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

版本兼容性

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

结果

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

包含本指南的集合

本指南属于以下精选快速入门集合,这些集合涵盖了更广泛的 Android 开发目标:

借助列表和网格,您的应用可以以视觉上令人愉悦且易于用户使用的形式显示集合。
了解如何使用可组合函数根据 Material Design 设计系统轻松创建美观的界面组件。
本系列视频介绍了各种 Compose API,可让您快速了解可用 API 以及如何使用它们。

有问题或反馈

请访问我们的常见问题解答页面,了解简短指南,或与我们联系,告诉我们您的想法。