Вы можете использовать список с несколькими типами элементов для отображения смешанного контента, такого как текст, изображения и интерактивные элементы.
Результаты

Совместимость версий
Для данной реализации требуется, чтобы в вашем проекте был установлен уровень 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)
Основные моменты, касающиеся кода.
- Задает тип содержимого для каждого элемента, устанавливая
contentTypeвitems(). - Сопоставляет каждый тип контента с соответствующим компонуемым объектом. Например,
Audio— этоcontentType, определенный в другом месте и сопоставленный с компонуемым объектомAudioMessage. - Функция Compose повторно использует отрисованные элементы для каждого элемента заданного типа контента.
Коллекции, содержащие это руководство
Данное руководство является частью подборки кратких руководств, охватывающих более широкие цели разработки под Android:

Отобразить список или сетку
Списки и сетки позволяют вашему приложению отображать коллекции в визуально привлекательной форме, удобной для восприятия пользователями.

Отображение интерактивных компонентов
Узнайте, как компонуемые функции позволяют легко создавать красивые компоненты пользовательского интерфейса на основе системы дизайна Material Design.

Основы композиции (видеоподборка)
В этой серии видеороликов представлены различные API Compose, быстро показанные доступные возможности и способы их использования.
Есть вопросы или отзывы?
Перейдите на страницу часто задаваемых вопросов и ознакомьтесь с краткими руководствами или свяжитесь с нами и поделитесь своими мыслями.