1
resposta

Dúvida sobre onCreate e onResume

Em que momento estamos passando a lista do banco de dados no onCreate? e como rodando somente com o atualiza "adapter.atualiza(produtoDao.buscarTodos())" no onResume ele funciona?

minha classe:

package br.com.alura.orgs.ui


import android.content.Intent
import android.os.Bundle
import android.util.Log
import android.util.LogPrinter
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import androidx.room.Room
import br.com.alura.orgs.DAO.ProdutoDao
import br.com.alura.orgs.R
import br.com.alura.orgs.adapter.ListaProdutosAdapter
import br.com.alura.orgs.databaseDAO.AppDatabase
import br.com.alura.orgs.databinding.ActivityFormularioProdutoBinding
import br.com.alura.orgs.databinding.ActivityListaProdutosBinding
import br.com.alura.orgs.model.Produto
import com.google.android.material.floatingactionbutton.FloatingActionButton
import java.math.BigDecimal

class ListaProdutosActivity: AppCompatActivity() {

    private var adapter = ListaProdutosAdapter(this,)
    private lateinit var binding: ActivityListaProdutosBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityListaProdutosBinding.inflate(layoutInflater)
        setContentView(binding.root)

        creatList()
        fab_lick()
    }

    override fun onResume() {
        super.onResume()
        val db = AppDatabase.instacia(this)
        val produtoDao = db.produtoDao()
        adapter.atualiza(produtoDao.buscarTodos())
        creatList()

    }

    private fun creatList() {
        binding.rv1.adapter = this.adapter
        binding.rv1.layoutManager = LinearLayoutManager(this)
    }

    private fun fab_lick(){
        binding.fabAdd
            .setOnClickListener{
                val intent = Intent(this, FormularioProdutoActivity::class.java)
                startActivity(intent)

            }
    }
}
1 resposta

Olá, Murilo!

Pelo código que você compartilhou, percebo que você está utilizando o Room para persistência de dados em um aplicativo Android. Sua dúvida é em relação ao momento em que você está passando a lista do banco de dados no método onCreate e como está funcionando o método onResume apenas com o código "adapter.atualiza(produtoDao.buscarTodos())".

No método onCreate, você está criando a lista de produtos e definindo o layout do RecyclerView. Já no método onResume, você está atualizando a lista de produtos e chamando novamente o método creatList() para atualizar a exibição dos dados no RecyclerView.

O método onResume é chamado toda vez que a atividade é retomada, ou seja, quando o usuário volta para a tela da lista de produtos. Portanto, ao chamar o método "adapter.atualiza(produtoDao.buscarTodos())" no onResume, você está garantindo que a lista de produtos será atualizada sempre que o usuário voltar para essa tela.

Dessa forma, quando você adiciona um novo produto ou faz alguma alteração no banco de dados, a lista será atualizada automaticamente quando o usuário voltar para a tela da lista de produtos.

Espero ter ajudado e bons estudos!