Sobes.tech
Junior — Middle

Kaip sukurti sąrašą, kuriame yra dešimt skirtingų elementų arba langelių tipų?

sobes.tech AI

Atsakymas iš AI

Norint sukurti sąrašą su dešimt skirtingų elementų arba langelių tipų Android, dažnai naudojamas RecyclerView su kelių tipų ViewHolder.

Pagrindiniai žingsniai:

  1. Perrašykite getItemViewType(int position) metodą adapteriuje ir grąžinkite unikalų tipą kiekvienam elementui.
  2. onCreateViewHolder sukurkite skirtingus ViewHolder priklausomai nuo tipo.
  3. onBindViewHolder užpildykite duomenis pagal ViewHolder tipą.

Pavyzdys:

class MultiTypeAdapter(private val items: List<Item>) : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
    override fun getItemViewType(position: Int): Int {
        return items[position].type // tipas nuo 0 iki 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))
            // ... iki 9
            else -> throw IllegalArgumentException("Nežinomas vaizdo tipas")
        }
    }

    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
}

Šiuo būdu galite lankstiai rodyti skirtingų tipų langelius viename sąraše.