Criar uma lista usando vários tipos de itens

É possível usar uma lista com vários tipos de itens para mostrar tipos de conteúdo mistos, como texto, imagens e elementos interativos.

Resultados

Saída de código mostrando mensagens de áudio e texto
Figura 1. Saída de código mostrando mensagens de áudio e texto.

Compatibilidade de versões

Essa implementação exige que o minSDK do projeto seja definido como nível da API 21 ou mais recente.

Dependências

Adicionar vários tipos de itens

É possível especificar o tipo de conteúdo de cada item do layout ao criar uma lista ou grade com vários tipos de itens:

@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)

Pontos principais sobre o código

  • Especifica o tipo de conteúdo de cada item definindo contentType em items().
  • Mapeia cada tipo de conteúdo para um elemento combinável correspondente. Por exemplo, Audio é um contentType definido em outro lugar e mapeado para um elemento combinável AudioMessage.
  • O Compose reutiliza os elementos combináveis renderizados para cada item de um determinado tipo de conteúdo.

Coleções que contêm este guia

Este guia faz parte das coleções de guias rápidos selecionados que abordam objetivos mais amplos de desenvolvimento para Android:

Com listas e grades, seu app pode mostrar coleções de uma forma visualmente agradável e fácil de consumir para os usuários.
Aprenda como as funções combináveis podem permitir que você crie facilmente componentes de interface bonitos com base no sistema de design do Material Design.
Esta série de vídeos apresenta várias APIs do Compose, mostrando rapidamente o que está disponível e como usar.

Tem dúvidas ou quer dar feedback?

Acesse nossa página de perguntas frequentes e confira guias rápidos ou entre em contato para compartilhar sua opinião.