Sobes.tech
Junior — Middle

Como criar uma lista que contenha dez elementos ou tipos de células diferentes?

sobes.tech IA

Resposta da IA

Para criar uma lista com dez elementos ou tipos de células diferentes no Android, geralmente usa-se RecyclerView com múltiplos tipos de ViewHolder.

Passos principais:

  1. No adaptador, sobrescrever o método getItemViewType(int position), retornando um tipo único para cada elemento.
  2. Em onCreateViewHolder, criar diferentes ViewHolders dependendo do tipo.
  3. Em onBindViewHolder, preencher os dados de acordo com o tipo de ViewHolder.

Exemplo:

class MultiTypeAdapter(private val items: List<Item>) : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
    override fun getItemViewType(position: Int): Int {
        return items[position].type // tipo de 0 a 9
    }

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
        return when(viewType) {
            0 -> Type0ViewHolder(LayoutInflater.from(parent.context).inflate(R.layout.item_type0, parent, false))
            1 -> Type1ViewHolder(LayoutInflater.from(parent.context).inflate(R.layout.item_type1, parent, false))
            // ... até 9
            else -> throw IllegalArgumentException("Tipo de vista desconhecido")
        }
    }

    override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
        when(holder) {
            is Type0ViewHolder -> holder.bind(items[position])
            is Type1ViewHolder -> holder.bind(items[position])
            // ...
        }
    }

    override fun getItemCount() = items.size
}

Dessa forma, é possível exibir de forma flexível diferentes tipos de células em uma mesma lista.