3
respostas

Está dando problema para puxar a lista do banco de dados


package com.example.frasson.app_homecare.Lista;



public class ListaClientesActivity extends CadastroClienteActivity{

    BaseDeCliente base;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_lista_clientes);

        base = Room.databaseBuilder(getApplicationContext(), BaseDeCliente.class, "base-1").build();

        List<Cliente> clientes;
        ClienteDAO dao = base.clienteDAO();

        clientes = dao.listarCliente(); //listarCliente é i @Query("SELECT * FROM Cliente") de select da interface ClienteDAO

        ListView listaClientes = (ListView) findViewById(R.id.lista_clientes);
        ArrayAdapter<Cliente> adapter = new ArrayAdapter<Cliente>(this, android.R.layout.simple_list_item_1, clientes);
        listaClientes.setAdapter(adapter);


        Button cadastrarCliente = (Button) findViewById(R.id.button_cadastrar_cliente);
        cadastrarCliente.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intentVaiCadastro = new Intent(ListaClientesActivity.this, CadastroClienteActivity.class);
        startActivity(intentVaiCadastro);
    }
});
    }

}

SE EU TROCAR ESTA PARTE DO CÓDIGO:

 base = Room.databaseBuilder(getApplicationContext(), BaseDeCliente.class, "base-1").build();

        List<Cliente> clientes;
        ClienteDAO dao = base.clienteDAO();

        clientes = dao.listarCliente(); //listarCliente é i @Query("SELECT * FROM Cliente") de select da interface ClienteDAO

        ListView listaClientes = (ListView) findViewById(R.id.lista_clientes);
        ArrayAdapter<Cliente> adapter = new ArrayAdapter<Cliente>(this, android.R.layout.simple_list_item_1, clientes);
        listaClientes.setAdapter(adapter);

POR:

        String[] clientes = {"Vinicius", "Luiza"...};
        ListView listaClientes = (ListView) findViewById(R.id.lista_clientes);
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, clientes);
        listaClientes.setAdapter(adapter);

ELE FUNCIONA NORMALMENTE PORÉM SÓ APRESENTA A LISTA DA STRING.

NÃO ESTOU CONSEGUINDO IDENTIFICAR MEU ERRO.

3 respostas

MEU BaseDeCliente:

@Database(entities = {Cliente.class}, version = 1) public abstract class BaseDeCliente extends RoomDatabase { public abstract ClienteDAO clienteDAO(); }

Meu ClienteDAO:

import com.example.frasson.app_homecare.usuarios.Cliente;

import java.util.List;

@Dao public interface ClienteDAO {

@Query("SELECT * FROM Cliente") List listarCliente();

@Insert void insertCliente(Cliente... clientes);

@Delete void deleteCliente(Cliente clientes);

@Update void updateCliente(Cliente... clientes); }

Fala ai Vinicius, tudo bem ?

Experimenta fazer isso :

Room.databaseBuilder(getApplicationContext(), BaseDeCliente.class, "base-1"). allowMainThreadQueries.build();