Junior
ViewHolder nümunəsinin mahiyyəti nədir?
sobes.tech Süni İntellekt
AI-dan cavab
ViewHolder — bu köməkçi sinif Android-də, adapter daxilində View elementlərinə istinadların keşlənməsi üçün nəzərdə tutulmuşdur.
Pattern-in mahiyyəti:
- Keşləmə: List elementinin yaradılması və ya yenidən istifadəsi zamanı hər dəfə
findViewById()çağırmaq əvəzinə,ViewHolderbir dəfə View-ə istinadları tapır və saxlayır. - Yenidən istifadə: Listdə sürüşdürmə zamanı Android artıq yaradılmış View obyektlərini istifadə edir, bu yaddaş və resursların qənaətinə kömək edir.
ViewHolder, bu View-ə bağlı olaraq, onun uşaqlarına sürətli giriş təmin edir. - Performans:
findViewById()çağırışlarının sayını azaldır, bu da listlərin çəkilməsini əhəmiyyətli dərəcədə sürətləndirir (məsələn,RecyclerView,ListView).
RecyclerView.Adapter-də istifadə nümunəsi:
class MyAdapter(...) : RecyclerView.Adapter<MyAdapter.MyViewHolder>() {
inner class MyViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
val textView: TextView = itemView.findViewById(R.id.my_text_view)
val imageView: ImageView = itemView.findViewById(R.id.my_image_view)
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {
val view = LayoutInflater.from(parent.context)
.inflate(R.layout.list_item_layout, parent, false)
return MyViewHolder(view) // Bir dəfə ViewHolder yaradır
}
override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
// Keşlənmiş istinadlardan istifadə edərək məlumatları yeniləyirik
holder.textView.text = "Item ${position}"
// holder.imageView.setImage...
}
// ... digər metodlar
}