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:
- En el adaptador, sobrescribir el método
getItemViewType(int position), devolviendo un tipo único para cada elemento. - En
onCreateViewHolder, crear diferentes ViewHolders según el tipo. - 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.