Sobes.tech
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:

  1. Keşləmə: List elementinin yaradılması və ya yenidən istifadəsi zamanı hər dəfə findViewById() çağırmaq əvəzinə, ViewHolder bir dəfə View-ə istinadları tapır və saxlayır.
  2. 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.
  3. 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
}