🧩 Exercícios - Cap 10: Inventário e Pokedex (LazyColumn)
🎯 Antes de começar
No Cap 10 você criou a ListaPokedex() usando LazyColumn + items(pokemons) { pokemon -> ... }, e nas Práticas Obrigatórias montou meusItens (lista de 10 itens) e estilizou cada linha com Card. Depois de completar as duas Práticas, faça o exercício extra abaixo para conhecer itemsIndexed, que entrega também a posição de cada item.
💪 Exercício Extra 1: Numerando a Lista com itemsIndexed (15 min)
Objetivo: Praticar itemsIndexed, que entrega o índice (posição) junto com cada item da lista.
Passos:
- No arquivo da sua Pokedex, adicione o import:
import androidx.compose.foundation.lazy.itemsIndexed - Troque o
items(pokemons) { pokemon -> ... }por:LazyColumn { itemsIndexed(pokemons) { indice, pokemon -> Text( text = "${indice + 1}. 👾 $pokemon", modifier = Modifier.padding(16.dp).fillMaxWidth(), fontSize = 20.sp ) } } - Rode na Preview/emulador e role a lista.
✅ Resultado Esperado
- A lista aparece numerada a partir de 1:
"1. 👾 Pikachu","2. 👾 Charmander","3. 👾 Squirtle", … - A numeração acompanha a ordem da lista
pokemons— se você adicionar/remover itens, os números se ajustam automaticamente.
🆘 Resolução de Problemas Comuns
| Erro | Causa | Solução |
|---|---|---|
Unresolved reference: itemsIndexed |
Faltou o import androidx.compose.foundation.lazy.itemsIndexed |
Adicione o import no topo do arquivo (ou use Alt+Enter para o Android Studio sugerir) |
A lista começa em "0. 👾 Pikachu" |
Esqueceu o + 1 ao montar o texto — indice começa em 0 |
Use ${indice + 1} para a numeração começar em 1 |
Erro expecting lambda parameters ou ordem trocada |
A ordem dos parâmetros do itemsIndexed é (indice, item), nessa ordem |
Confirme itemsIndexed(pokemons) { indice, pokemon -> ... } — índice primeiro, item depois |