Junior — Middle
Hogyan lehet létrehozni egy listát, amely tíz különböző elemet vagy cellatípust tartalmaz?
sobes.tech MI
Válasz az MI-től
Androidon általában RecyclerView-t használnak többféle ViewHolder típussal, hogy létrehozzanak egy listát tíz különböző elemmel vagy cellatípussal.
Fő lépések:
- A adapterben írja felül a
getItemViewType(int position)metódust, és adjon vissza egy egyedi típust minden elemhez. - A
onCreateViewHolder-ben hozzon létre különböző ViewHolder-eket a típus szerint. - A
onBindViewHolder-ben töltse ki az adatokat a ViewHolder típusának megfelelően.
Példa:
class MultiTypeAdapter(private val items: List<Item>) : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
override fun getItemViewType(position: Int): Int {
return items[position].type // típus 0-tól 9-ig
}
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))
// ... 9-ig
else -> throw IllegalArgumentException("Ismeretlen nézet típus")
}
}
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
}
Így rugalmasan megjelenítheti különböző típusú cellákat egy listában.