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
}
Инчунин, шумо метавонед намудҳои гуногуни ҳуҷраҳоро дар як рӯйхат бо чандирӣ нишон диҳед.