Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

ListWithMultipleItemTypes.kt — Incorrect usage of items() lambda and contentType

Aperta Adatta ai principianti
#863 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

@nero002 ci sta già lavorando.

Dal 20/5/2026.

  • #925 di @nero002 — aperta

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

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di android/snippets

Tutte le issue di android/snippets

Issue simili

Altre issue su Kotlin

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.