Junior — Middle
Kako napraviti listu koja sadrži deset različitih elemenata ili tipova ćelija?
sobes.tech АИ
Одговор од АИ
За креирање листе са десет различитих елемената или типова ћелија у Android-у, обично се користи RecyclerView са више типова ViewHolder-а.
Главни кораци:
- Препишите метод
getItemViewType(int position)у адаптеру и враћайте јединствени тип за сваки елемент. - У
onCreateViewHolder, креирајте различите ViewHolder-е у зависности од типа. - У
onBindViewHolder, попуните податке у складу са типом ViewHolder-а.
Пример:
class MultiTypeAdapter(private val items: List<Item>) : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
override fun getItemViewType(position: Int): Int {
return items[position].type // тип од 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))
// ... до 9
else -> throw IllegalArgumentException("Непознат тип приказа")
}
}
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
}
Овим приступом можете флексибилно приказати различите типове ћелија у једној листи.