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 :
- Dans l'adaptateur, redéfinir la méthode
getItemViewType(int position), en renvoyant un type unique pour chaque élément. - Dans
onCreateViewHolder, créer différents ViewHolders selon le type. - 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.