ListWithMultipleItemTypes.kt — Incorrect usage of items() lambda and contentType
I maintainer di solito rispondono entro 1 giorno
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 82/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Tranquilla
- Stack tecnologico
- kotlin
- Ambito
- documentation
Direzione di ricerca
Inizia dalle righe indicate di compose/snippets/src/main/java/com/example/compose/snippets/lists/ListWithMultipleItemTypes.kt, quindi confrontale con il Build a list with multiple item types Quick Guide. Verifica che la lambda items esegua il rendering solo del messaggio corrente e che contentType rifletta il tipo di messaggio; il lavoro è completato quando lo snippet produce una riga per messaggio e può riutilizzare le composizioni per i tipi corrispondenti.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
The code snippet in ListWithMultipleItemTypes.kt (used in the Build a list with multiple item types Quick Guide) contains multiple logical errors.
Current Code
@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)
}
}
}
}
Issues
contentType = { it } returns the index (Int), not the content type. The it parameter inside the contentType lambda is the item index. This means every item gets a different content type (0, 1, 2, …), which completely defeats the purpose of contentType — Compose cannot reuse compositions across items of the same type. It should be something like { messages[it]::class }.
The items content lambda iterates the entire list for every single item. The lambda parameter it is the index of the current item, but instead of using messages[it] to render only the current item, the code uses for (message in messages) which iterates over all messages for each row. For a list of N items, this produces N × N composables instead of N.
This is confusing for developers trying to learn from the snippet.
- Lingua principale
- Kotlin
- Stelle
- 1.1k
- Fork
- 427
- Merge medio
- 3g 3h
- PR unite (30g)
- 37
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di android/snippets
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno
-
Wrong example: Basic list-detail layout (custom Scene and strategy)Forse già presa @nero002 l’ha presa 142 giorni fa. Aperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 55/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
android/snippets#830 · 1 commento · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 25/100
android/snippets#773 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Inconsistent APIAperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 35/100
android/snippets#755 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di android/snippets
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
I maintainer di solito rispondono entro 1 giorno
-
enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
rustyrazorblade/easy-db-lab#1003 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
droidconKE/droidconKeKotlin#426 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
MuwMx/YumaPlayer#101 · 1 reazione ·