3
respostas

Inserção de imagem ao item do Recycler View

Eu estou praticando recyclerView e gostaria de inserir uma imagem ao item de produtos, no layout. Utilizei a imagem padrão como tools e agora vou inserir no Model de Produtos, um parâmetro de imagem. Entretanto, ao utilizar no adapter a imagem como ficaria no método de vinculacão?

Em texto o item fica assim:

    val nome = itemView.findViewById<TextView>(R.id.tv_nome_do_produto)
        nome.text = produto.nome

Outra dúvida, caso eu não queira utilizar o findViewById e sim o Binding, como utilizaria? Eu tentei, mas tenho que inserir na class do Adapter o mesmo conteúdo que eu inseri na MainActivity, estes:

private lateinit var binding: ActivityMainBinding
.
. //No onCreate()
.
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)

Me ajude nas duas perguntas! Obrigada pela atencão.

Ana

3 respostas

Por eu utilizar dados mocados, eu tenho que adicionar as imagens ao drwable e depois adicionar:

    imagem.drawable

Mas o complemento de valor não é correto, neste caso. O que fazer?

Oi Ana, tudo bem ?

Sua imagem precisa seguir o padrão do android ou estar em algum local que você possa resgatar.

Se estiver usando imagens do proprio projeto, basta usar um inteiro:

val imagem : Int

e na hora de popular:

produto.imagem = R.drawable.xpto

Colocando no image view:

imagem.setImageResource(produto.imagem)

Agora sobre o ViewBinding

Você chegou no seu app/build.gradle e colocou isso certo?

android {

    buildFeatures {
        viewBinding true
    }

}

Se sim, no seu adapter você vai ter a classe igual a da activity, a diferença é que vai chamar o método inflate e retornar a view, algo similar a isso aqui:

   override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): SeuViewHolder {
        val view =
            SeuItemBinding.inflate(LayoutInflater.from(parent.context), parent, false)
        return SeuViewHolder(view)
    }