Junior
Qual é a essência do padrão ViewHolder?
sobes.tech IA
Resposta da IA
O ViewHolder é uma classe auxiliar no Android, destinada a fazer cache de referências aos elementos View dentro de um adaptador.
A essência do padrão:
- Caching: Em vez de chamar
findViewById()toda vez que um elemento da lista é criado ou reutilizado, oViewHolderencontra e armazena as referências às View uma única vez. - Reutilização: Ao percorrer a lista, o Android reutiliza objetos View já criados para economizar memória e recursos. O
ViewHolder, vinculado a uma View assim, fornece acesso rápido aos seus elementos filhos. - Desempenho: Reduz o número de chamadas a
findViewById(), acelerando significativamente a renderização das listas (por exemplo, emRecyclerView,ListView).
Exemplo de uso em RecyclerView.Adapter:
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) // Cria um ViewHolder uma única vez
}
override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
// Usa as referências em cache para atualizar os dados
holder.textView.text = "Item ${position}"
// holder.imageView.setImage...
}
// ... outros métodos
}