Junior
Mi a ViewHolder minta lényege?
sobes.tech MI
Válasz az MI-től
A ViewHolder egy segédosztály az Androidban, amely az adapteren belüli View-elemek hivatkozásainak gyorsítótárazására szolgál.
A minta lényege:
- Gyorsítótárazás: Minden alkalommal, amikor egy listaelemet létrehozunk vagy újra felhasználunk, a
findViewById()hívás helyett aViewHolderegyszer megtalálja és tárolja a View hivatkozásokat. - Újrahasználat: A lista görgetése közben az Android újra felhasználja a már létrehozott View objektumokat, ezzel takarítva meg memóriát és erőforrásokat. A hozzá kötött
ViewHoldergyors hozzáférést biztosít az alárendelt elemekhez. - Teljesítmény: Csökkenti a
findViewById()hívások számát, ezáltal jelentősen gyorsítva a listák renderelését (pl.RecyclerView,ListView).
Példa a RecyclerView.Adapter-ben:
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) // Egyszeri ViewHolder létrehozás
}
override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
// A gyorsítótárazott hivatkozások használata az adatok frissítéséhez
holder.textView.text = "Item ${position}"
// holder.imageView.setImage...
}
// ... egyéb metódusok
}