Sobes.tech
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:

  1. A adapterben írja felül a getItemViewType(int position) metódust, és adjon vissza egy egyedi típust minden elemhez.
  2. A onCreateViewHolder-ben hozzon létre különböző ViewHolder-eket a típus szerint.
  3. 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.