1
resposta

Desafio: Implementando o menu de popup

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)
            }
        }
1 resposta

Você está conseguindo rodar o código exatamente assim? Creio que falta um true dentro do setOnLongClickListener já quele precisa receber um boolean

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software