Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Não consigo implementar o view binding

package com.example.listadomercado

import android.content.Intent
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.RecyclerView
import com.google.android.material.floatingactionbutton.FloatingActionButton

class Main_Activity : AppCompatActivity(R.layout.activity_main) {

    private val bancoDeDados = BancoDeDados()
    private val adapter = Adaptador(context = this, produtos = bancoDeDados.buscaTodos())
    private val binding by lazy {
        Main_ActivityBinding.inflate(layoutInflater)
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        executaRecyclerView()
        configuraFAB()
    }

    override fun onResume() {
        super.onResume()
        adapter.atualiza(bancoDeDados.buscaTodos())  }

   private fun configuraFAB(){
       val fab = findViewById<FloatingActionButton>(R.id.addcirculoazul)
       fab.setOnClickListener{
           val intent = Intent(this, Secundaria_Activity::class.java)
           startActivity(intent)
       }
   }

    private fun executaRecyclerView(){
        val recyclerView = findViewById<RecyclerView>(R.id.recyclerviewT)
        recyclerView.adapter = adapter
    }


}

Não consigo escrever o import e a expressMain_ActivityBinding.inflate" fica toda vermelha e não sei o que fazer pra implementar essa alteração do view binding

Algu

2 respostas
solução!

Olá Fernando, tudo bem?

Temos 2 pontos importantes a serem tratados em relação ao seu código.

Primeiro: verifique se ativou o viewBinding dentro do seu build.gradle a nível de módulo com esse código:

android {
        ...
        viewBinding {
            enabled = true
        }
    }

Segundo: Dentro do kotlin nós utilizamos o padrão PascalCase para declarar classes, ou seja, sua classe ficaria algo como MainActivity sem o uso de underlines ( _ ), isso facilitaria o acesso ao binding e o trecho do código ficaria parecido com esse:

private val binding by lazy {
        ActivityMainBinding.inflate(layoutInflater)
    }

sendo um padrão adotado para a declaração da variável binding: ActivityNomeDaSuaActivityBinding assim como no código acima ou no exemplo do curso.

Qualquer dúvida estarei a disposição.

Forte abraço e bons estudos!!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Obrigado Matheus. Eu acabei conseguindo fazer as alterações. Não aprendi bem mas foi. Ainda com dificuldades com os imports mas nada que pare os estudos.

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