Sobes.tech
Junior — Middle

Πώς μπορεί να δημιουργηθεί μια λίστα που περιέχει δέκα διαφορετικά στοιχεία ή τύπους κελιών;

sobes.tech AI

Απάντηση από AI

Για να δημιουργήσετε μια λίστα με δέκα διαφορετικά στοιχεία ή τύπους κελιών στο Android, συνήθως χρησιμοποιείται το RecyclerView με πολλούς τύπους ViewHolder.

Βασικά βήματα:

  1. Υπερκαλύψτε τη μέθοδο getItemViewType(int position) στον προσαρμογέα και επιστρέψτε έναν μοναδικό τύπο για κάθε στοιχείο.
  2. Στο onCreateViewHolder, δημιουργήστε διαφορετικούς ViewHolder ανάλογα με τον τύπο.
  3. Στο 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
}

Έτσι, μπορείτε ευέλικτα να εμφανίζετε διαφορετικούς τύπους κελιών σε μια λίστα.