複数のアイテムタイプを使用してリストを作成する

複数のアイテムタイプを含むリストを使用すると、テキスト、画像、インタラクティブな要素などの混合コンテンツ タイプを表示できます。

結果

音声メッセージとテキスト メッセージを表示するコード出力
[Figure 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 開発の幅広い目標をカバーする、厳選されたクイック ガイド コレクションの一部です。

リストとグリッドを使用すると、アプリでコレクションを 視覚的に見やすく、ユーザーが簡単に利用できる形式で表示できます。
コンポーズ可能関数を使用すると、マテリアル デザイン デザイン システムに基づいて美しい UI コンポーネントを簡単に作成できます。
この一連の動画では、さまざまな Compose API を紹介し、 利用可能な機能とその使用方法を簡単に説明します。

ご不明な点やフィードバックがある場合

よくある質問のページでクイック ガイドについて確認するか、お問い合わせください。