Coloquei os clicks dentro do init da classe ViewHolder (testei funcionou), depois movi ambos para o metodo que eu faço o bind e obtive o mesmo resultado.
Qual momento especifico devo usar um ou outro?
inner class ViewHolder(private val binding: ProdutoItemBinding) :
RecyclerView.ViewHolder(binding.root) {
init {
itemView.setOnClickListener {
if (::produto.isInitialized) {
quandoClicaNoItem(produto)
}
}
itemView.setOnLongClickListener {
vaiParaFormularioProduto(it)
}
}
Sendo que assim também funciona
fun vincula(produto: Produto) {
this.produto = produto
val nome = binding.produtoItemNome
nome.text = produto.nome
val descricao = binding.produtoItemDescricao
descricao.text = produto.descricao
val valor = binding.produtoItemValor
val valorEmMoeda: String = produto.valor
.formataParaMoedaBrasileira()
valor.text = valorEmMoeda
val visibilidade = if (produto.imagem != null) {
View.VISIBLE
} else {
View.GONE
}
binding.imageView.visibility = visibilidade
binding.imageView.tentaCarregarImagem(produto.imagem)
/// --------
itemView.setOnClickListener {
quandoClicaNoItem(produto)
}
itemView.setOnLongClickListener {
vaiParaFormularioProduto(it)
}
}