Junior — Middle
How can you create a list containing ten different elements or types of cells?
sobes.tech AI
Answer from AI
To create a list with ten different elements or cell types in Android, RecyclerView with multiple ViewHolder types is usually used.
Main steps:
- Override the
getItemViewType(int position)method in the adapter, returning a unique type for each element. - In
onCreateViewHolder, create different ViewHolders depending on the type. - In
onBindViewHolder, populate data according to the ViewHolder type.
Example:
class MultiTypeAdapter(private val items: List<Item>) : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
override fun getItemViewType(position: Int): Int {
return items[position].type // type from 0 to 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))
// ... up to 9
else -> throw IllegalArgumentException("Unknown view type")
}
}
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
}
This way, you can flexibly display different cell types in a single list.