Sobes.tech
Junior — Middle

Comment peut-on créer une liste contenant dix éléments ou types de cellules différents?

sobes.tech IA

Réponse de l'IA

Pour créer une liste avec dix éléments ou types de cellules différents dans Android, on utilise généralement RecyclerView avec plusieurs types de ViewHolder.

Étapes principales :

  1. Dans l'adaptateur, redéfinir la méthode getItemViewType(int position), en renvoyant un type unique pour chaque élément.
  2. Dans onCreateViewHolder, créer différents ViewHolders selon le type.
  3. Dans onBindViewHolder, remplir les données en fonction du type de ViewHolder.

Exemple :

class MultiTypeAdapter(private val items: List<Item>) : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
    override fun getItemViewType(position: Int): Int {
        return items[position].type // type de 0 à 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))
            // ... jusqu'à 9
            else -> throw IllegalArgumentException("Type de vue inconnu")
        }
    }

    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
}

Ainsi, il est possible d'afficher de manière flexible différents types de cellules dans une seule liste.