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

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

バージョンの互換性

この実装では、プロジェクトの 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 は、他の場所で定義され、AudioMessage コンポーザブルにマッピングされた contentType です。
  • Compose は、特定のコンテンツ タイプの各アイテムに対してレンダリングされたコンポーザブルを再利用します。

結果

音声メッセージとテキスト メッセージを示すコード出力
図 1.音声メッセージとテキスト メッセージを示すコード出力。

このガイドを含むコレクション

このガイドは、Android 開発の幅広い目標を網羅する、厳選されたクイックガイド コレクションの一部です。

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

ご質問やフィードバックがある場合

よくある質問のページでクイックガイドをご覧になるか、お問い合わせフォームからご意見をお寄せください。