Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Gerar lista de dados sqlite

Boa noite,

Estou criando um aplicativo.

Na tela de menu existe um botão cadastrar ao clica-lo abri um formulario para preencher dados: "_id", "massa", "cobertura", "recheio", "formato", "qt" classe: Pedido.java

os dados já estao sendo inseridos conforme o código:

 public void insere_registro(String massa, String cobertura, String recheio, String formato, String qt) {


        Log.i("Atividade no BD", "Inserindo registro");

        SQLiteDatabase bd = this.getWritableDatabase();

        ContentValues valores = new ContentValues();

        valores.put("massa", massa);
        valores.put("cobertura", cobertura);
        valores.put("recheio", recheio);
        valores.put("formato", formato);
        valores.put("qt", qt);

        bd.insert("minha_tabela", null, valores);
        bd.close();
    }
 // esta classe é onde fica os metodos do banco Classe Banco

Quero criar uma nova tela View no qual ira so aparecer os dados do banco

na classe do banco coloquei:

    public ArrayList<Registro> listar(){

        SQLiteDatabase bd = this.getReadableDatabase();

        Cursor cursor = bd.query("minha_tabela", new String[]{"_id", "massa", "cobertura", "recheio", "formato", "qt"}, null, null, null, null, null, null);

        ArrayList<Registro> registros = new ArrayList<Registro>();

        return registros;
    }

e na classe principal cadastro no qual tem o botao listar

  btListar.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                registros = banco.listar();

            }
        });

Observação existe uma outra classe que se chama listar ao clicar nele tem o view , porém ao colocar as classes anteriores o aplicativo ao executar travou como corrigir

1 resposta
solução!

Nicolle,

o seu método de listar deveria iterar sobre o cursor para então preencher a sua List e retornar, para uso na sua view.

    public List<Bolo> listar() {
        String sql = "SELECT * from " + TABLE;
        SQLiteDatabase db = getReadableDatabase();
        Cursor cursor = db.rawQuery(sql, null);
        List<Bolo> bolos = new ArrayList<>();
        while (cursor.moveToNext()) {
            Bolo bolo = new Bolo();
            bolo.setId(cursor.getLong(cursor.getColumnIndex("_id")));
            bolo.setMassa(cursor.getString(cursor.getColumnIndex("massa")));
            bolo.setCobertura(cursor.getString(cursor.getColumnIndex("cobertura")));
            bolo.setRecheio(cursor.getString(cursor.getColumnIndex("recheio")));
            bolo.setFormato(cursor.getString(cursor.getColumnIndex("formato")));
            bolo.setQuantidade(cursor.getLong(cursor.getColumnIndex("qt")));
            bolos.add(bolo);
        }
        cursor.close();
        return bolos;
    }

Perceba que você cria uma lista de registo no seu método listar, não faz absolutamente nada com ele e faz o retorno dessa ArrayList.

Outra coisa, o insere_registro (prefira usar insereRegistro, que é o padrão para Java), recebe várias strings, quando na verdade tudo que ele se refere é um bolo. Então crie uma classe de modelo que contenha as strings, algo como


public class Bolo {
    private Long id;
    private String massa;
    private String cobertura;
    //outros atributos

    //getters e setters
}

Se possível, coloque o erro gerado.