📋 Cap 08: Inventário e Pokedex (LazyColumn)
🎯 Objetivo da Aula: Ao final desta aula, você saberá exibir listas de dados no celular de forma profissional. Você aprenderá a usar a LazyColumn, que é a forma mais rápida de mostrar milhares de itens (como o feed de uma rede social) sem deixar o celular lento.
🏢 O Cenário Prático (Seu Desafio): Sua Pokedex está crescendo! Agora você tem uma lista com os nomes de vários Pokémons. Se você tentar desenhar cada um manualmente na tela, vai demorar horas. Seu desafio é criar uma Lista Automática que recebe os nomes e os exibe de forma organizada e rolável.
🧠 Fundamentos: A Teoria Traduzida
📖 Dicionário do Programador
- LazyColumn (Coluna Preguiçosa): Ela só trabalha no que é necessário! Se sua lista tem 1000 itens, mas na tela só cabem 5, ela só desenha os 5. Os outros 995 ficam esperando você rolar a tela. Isso economiza bateria e memória.
- Reciclagem: O Android reaproveita o “desenho” do item de cima para mostrar o item que está chegando embaixo.
🎨 O Padrão de Lista
Para criar uma lista, você precisa de duas coisas:
- Uma Lista de Dados (ex:
listOf("Pikachu", "Charmander")). - Um Template de Item (como cada linha da lista deve aparecer).
graph TD A[Lista de Nomes] --> B{LazyColumn} B --> C[Linha 1: Pikachu] B --> D[Linha 2: Charmander] B --> E[Linha 3: Squirtle]
📖 Exemplo Passo a Passo: Sua Pokedex
- Crie a lista de nomes usando
listOf. - Use o comando
items(suaLista)dentro daLazyColumn.
@Composable
fun ListaPokedex() {
// 1. A nossa base de dados
val pokemons = listOf("Pikachu", "Charmander", "Squirtle", "Bulbasaur", "Mewtwo")
// 2. A esteira rolante
LazyColumn {
items(pokemons) { pokemon ->
// 3. O template de cada linha
Text(
text = "👾 $pokemon",
modifier = Modifier.padding(16.dp).fillMaxWidth(),
fontSize = 20.sp
)
}
}
}🛠️ Prática Obrigatória 1:
Crie uma lista de Strings chamada meusItens com pelo menos 10 nomes de itens de jogos (ex: “Poção”, “Espada”, “Escudo”). Exiba essa lista usando uma LazyColumn.
🛠️ Prática Obrigatória 2:
Estilize seu item da lista! Coloque cada item dentro de um Card do Compose para que ele tenha uma borda e uma sombra, parecendo uma carta de baralho.
🔑 Gabarito Passo a Passo:
@Composable
fun MeuInventario() {
val itens = listOf("Espada", "Escudo", "Poção", "Arco", "Cajado", "Bota", "Capa", "Anel")
LazyColumn {
items(itens) { item ->
// Usando um Card para cada item
Card(modifier = Modifier.padding(8.dp).fillMaxWidth()) {
Text(text = "📦 $item", modifier = Modifier.padding(16.dp))
}
}
}
}📤 Instruções de Entrega (Microsoft Teams):
- Envie o código da sua
LazyColumncom o uso deCard. - Submeta no canal de tarefas.