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.