Junior — Middle
Πώς μπορεί να δημιουργηθεί μια λίστα που περιέχει δέκα διαφορετικά στοιχεία ή τύπους κελιών;
sobes.tech AI
Απάντηση από AI
Για να δημιουργήσετε μια λίστα με δέκα διαφορετικά στοιχεία ή τύπους κελιών στο 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
}
Έτσι, μπορείτε ευέλικτα να εμφανίζετε διαφορετικούς τύπους κελιών σε μια λίστα.