Sobes.tech
Junior — Middle

¿Cómo se puede crear una lista que contenga diez elementos o tipos de celdas diferentes?

sobes.tech AI

Respuesta de la IA

Para crear una lista con diez elementos o tipos de celdas diferentes en Android, generalmente se utiliza RecyclerView con múltiples tipos de ViewHolder.

Pasos principales:

  1. En el adaptador, sobrescribir el método getItemViewType(int position), devolviendo un tipo único para cada elemento.
  2. En onCreateViewHolder, crear diferentes ViewHolders según el tipo.
  3. En onBindViewHolder, llenar los datos de acuerdo con el tipo de ViewHolder.

Ejemplo:

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))
            // ... hasta 9
            else -> throw IllegalArgumentException("Tipo de vista desconocido")
        }
    }

    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
}

De esta manera, se puede mostrar de forma flexible diferentes tipos de celdas en una misma lista.