使用多種項目類型建構清單

您可以使用含有多個項目類型的清單,顯示混合內容類型,例如文字、圖片和互動式元素。

結果

程式碼輸出內容會顯示音訊和訊息
圖 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 設計系統輕鬆建立美觀的 UI 元件。
這一系列影片將介紹各種 Compose API,快速展示可用的 API 和使用方式。

如有問題或想提供意見

前往常見問題頁面,瞭解快速指南或與我們聯絡,分享您的想法。