11
respostas

Erro ao rodar o App

at com.example.nbrasil.geradorsuntech.DAO.ListaDAO.buscaLista(ListaDAO.java:67) at com.example.nbrasil.geradorsuntech.ListaMainActivity.onCreate(ListaMainActivity.java:28)

11 respostas
public class ListaDAO extends SQLiteOpenHelper {
//toda vez que eu tiver que atualizar o banco mudo a versão para a nova versão ex:2.


    public ListaDAO(Context context) {
        super(context, "Gerador", null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {

        String sql = "CREATE TABLE Lista (id INTEGER PRIMARY KEY, date TEXT NOT NULL, batV TEXT, diesel TEXT, horaIni TEXT, cargaW TEXT, cargaVA TEXT, horaFim TEXT, totalHR TEXT, responsavel TEXT);";
        db.execSQL(sql);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        String sql = "DROP TABLE IF EXISTS Lista";
        db.execSQL(sql);
        onCreate(db);

    }

    public void insere(Lista lista) {
        SQLiteDatabase db = getWritableDatabase();
        //fucioona como o map do java

        ContentValues dados = new ContentValues();
        dados.put("id", lista.getId());
        dados.put("date", lista.getDate());
        dados.put("batV", lista.getBatV());
        dados.put("diesel", lista.getDiesel());
        dados.put("horaIni", lista.getHoraIni());
        dados.put("cargaW", lista.getCargaW());
        dados.put("cargaVA", lista.getCargaVA());
        dados.put("horaFim", lista.getHoraFim());
        dados.put("totalHR", lista.getTotalHR());
        dados.put("responsavel", lista.getResponsavel());


        db.insert("Lista", null, dados);
    }
    //busca no SQL         // Cursor como se fosse um ponteiro
    public List<Lista> buscaLista() {
        String sql = "SELECT * FROM Lista;";
        SQLiteDatabase db = getReadableDatabase();
        Cursor c = db.rawQuery(sql, null);


        List<Lista> lista = new ArrayList<Lista>();
        while  (c.moveToNext()); {
            Lista lista1 = new Lista();
            lista1.setId(c.getLong(c.getColumnIndex("id")));
            lista1.setDate(c.getString(c.getColumnIndex("date")));
            lista1.setBatV(c.getString(c.getColumnIndex("batV")));
            lista1.setDiesel(c.getString(c.getColumnIndex("diesel")));
            lista1.setHoraIni(c.getString(c.getColumnIndex("horaIni")));
            lista1.setCargaW(c.getString(c.getColumnIndex("cargaW")));
            lista1.setCargaVA(c.getString(c.getColumnIndex("cargaVA")));
            lista1.setHoraFim(c.getString(c.getColumnIndex("horaFim")));
            lista1.setTotalHR(c.getString(c.getColumnIndex("totalHR")));
            lista1.setResponsavel(c.getString(c.getColumnIndex("responsavel")));

            lista.add(lista1);
        }
        c.close();
        return lista;
    }
}
public class Lista {

    private Long id;
    private String date;
    private String batV;
    private String diesel;
    private String horaIni;
    private String cargaW;
    private String cargaVA;
    private String horaFim;
    private String totalHR;
    private String responsavel;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getDate() {
        return date;
    }

    public void setDate(String date) {
        this.date = date;
    }

    public String getBatV() {
        return batV;
    }

    public void setBatV(String batV) {
        this.batV = batV;
    }

    public String getDiesel() {
        return diesel;
    }

    public void setDiesel(String diesel) {
        this.diesel = diesel;
    }

    public String getHoraIni() {
        return horaIni;
    }

    public void setHoraIni(String horaIni) {
        this.horaIni = horaIni;
    }

    public String getCargaW() {
        return cargaW;
    }

    public void setCargaW(String cargaW) {
        this.cargaW = cargaW;
    }

    public String getCargaVA() {
        return cargaVA;
    }

    public void setCargaVA(String cargaVA) {
        this.cargaVA = cargaVA;
    }

    public String getHoraFim() {
        return horaFim;
    }

    public void setHoraFim(String horaFim) {
        this.horaFim = horaFim;
    }

    public String getTotalHR() {
        return totalHR;
    }

    public void setTotalHR(String totalHR) {
        this.totalHR = totalHR;
    }

    public String getResponsavel() {
        return responsavel;
    }

    public void setResponsavel(String responsavel) {
        this.responsavel = responsavel;
    }

    @Override
    public String toString() {
        return getDate() + " - " + getResponsavel() ;
    }
}
package com.example.nbrasil.geradorsuntech;

import android.app.Activity;
import android.widget.EditText;

import com.example.nbrasil.geradorsuntech.modelo.Lista;

public class FormularioHelper {


    private final EditText campoDate;
    private final EditText campoBatV;
    private final EditText campoDiesel;
    private final EditText campoHoraIni;
    private final EditText campoCargaW;
    private final EditText campoCargaVA;
    private final EditText campoHoraFim;
    private final EditText campoTotalhr;
    private final EditText campoResponsavel;


    public FormularioHelper (FormularioLista activity) {

         campoDate = (EditText) activity.findViewById(R.id.formulario_date);
         campoBatV  = (EditText) activity.findViewById(R.id.formulario_batv);
         campoDiesel = (EditText) activity.findViewById(R.id.formulario_diesel);
         campoHoraIni = (EditText) activity.findViewById(R.id.formulario_horaini);
         campoCargaW = (EditText) activity.findViewById(R.id.formulario_cargaw);
         campoCargaVA = (EditText) activity.findViewById(R.id.formulario_cargava);
         campoHoraFim = (EditText) activity.findViewById(R.id.formulario_horafim);
         campoTotalhr = (EditText) activity.findViewById(R.id.formulario_totalhr);
         campoResponsavel = (EditText) activity.findViewById(R.id.formulario_respo);


    }

    public Lista pegaLista() {
        Lista lista = new Lista();
        lista.setDate(campoDate.getText().toString());
        lista.setBatV(campoBatV.getText().toString());
        lista.setDate(campoDiesel.getText().toString());
        lista.setDate(campoHoraIni.getText().toString());
        lista.setDate(campoCargaW.getText().toString());
        lista.setDate(campoCargaVA.getText().toString());
        lista.setDate(campoHoraFim.getText().toString());
        lista.setDate(campoTotalhr.getText().toString());
        lista.setDate(campoResponsavel.getText().toString());
        return lista;
    }
}
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;

import com.example.nbrasil.geradorsuntech.DAO.ListaDAO;
import com.example.nbrasil.geradorsuntech.modelo.Lista;

import java.lang.reflect.Array;
import java.util.List;

public class ListaMainActivity extends AppCompatActivity {

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

        //conexao


        ListaDAO DAO = new ListaDAO(this);
        List<Lista> lista = DAO.buscaLista();
        DAO.close();


        ListView listaItens = (ListView) findViewById(R.id.lista_itens);
        ArrayAdapter<Lista> adapter = new ArrayAdapter<Lista>(this, android.R.layout.simple_list_item_1, lista);
        listaItens.setAdapter(adapter);

        //botaoparacriarnovalista

        Button novo = (Button) findViewById(R.id.botao_novo);
        novo.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intentVaiProFormulario = new Intent(ListaMainActivity.this, FormularioLista.class);
                startActivity(intentVaiProFormulario);
            }
        });
    }
}
public class FormularioLista extends AppCompatActivity {

    private FormularioHelper helper;

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

         helper = new FormularioHelper(this);


    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
         MenuInflater inflater = getMenuInflater();
         inflater.inflate(R.menu.menu_formulario, menu);

        return super.onCreateOptionsMenu(menu);

    }

    //botao de salvar o aluno

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.menu_formulario_ok:
                Lista Lista = helper.pegaLista();
                ListaDAO DAO = new ListaDAO(this);
                DAO.insere(Lista);
                DAO.close();

                Toast.makeText(FormularioLista.this, "Lista Salva!", Toast.LENGTH_SHORT).show();
                finish();
                break;
        }

        return super.onOptionsItemSelected(item);
    }
}
6-26 18:00:47.119 11164-11164/com.example.nbrasil.geradorsuntech E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.nbrasil.geradorsuntech, PID: 11164
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.nbrasil.geradorsuntech/com.example.nbrasil.geradorsuntech.ListaMainActivity}: android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2665)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)
        at android.app.ActivityThread.-wrap12(ActivityThread.java)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:154)
        at android.app.ActivityThread.main(ActivityThread.java:6119)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
     Caused by: android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
        at android.database.AbstractCursor.checkPosition(AbstractCursor.java:460)
        at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:136)
        at android.database.AbstractWindowedCursor.getLong(AbstractWindowedCursor.java:74)
        at com.example.nbrasil.geradorsuntech.DAO.ListaDAO.buscaLista(ListaDAO.java:67)
        at com.example.nbrasil.geradorsuntech.ListaMainActivity.onCreate(ListaMainActivity.java:28)
        at android.app.Activity.performCreate(Activity.java:6679)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2618)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726) 
        at android.app.ActivityThread.-wrap12(ActivityThread.java) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:154) 
        at android.app.ActivityThread.main(ActivityThread.java:6119) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)

Fala ai Natan, de boa?

Cara faz um teste um tanto quanto idiota ai, no seu select faz isso :

        String sql = "SELECT * FROM Lista";
        SQLiteDatabase db = getReadableDatabase();
        Cursor c = db.rawQuery(sql, null);

Está assim

 public List<Lista> buscaLista() {
        String sql = "SELECT * FROM Lista";
        SQLiteDatabase db = getReadableDatabase();
        Cursor c = db.rawQuery(sql, null);

E continua o mesmo erro ;/

Por favor ajude

Consegue colocar no github e me mandar.?

1º coisa: na sua busca você tá matando o cursor, rs.Não havia reparado antes, contudo dá uma olhadinha nisso:

        while  (c.moveToNext()); {

você coloca um ; que faz o while parar ali.

só precisa tirar isso e já resolve o problema.

Contudo você vai ter outro problema na hora de inserir seus dados, dá uma olhadinha no seu helper

public Lista pegaLista() {
        Lista lista = new Lista();
        lista.setDate(campoDate.getText().toString());
        lista.setBatV(campoBatV.getText().toString());
        lista.setDate(campoDiesel.getText().toString());
        lista.setDate(campoHoraIni.getText().toString());
        lista.setDate(campoCargaW.getText().toString());
        lista.setDate(campoCargaVA.getText().toString());
        lista.setDate(campoHoraFim.getText().toString());
        lista.setDate(campoTotalhr.getText().toString());
        lista.setDate(campoResponsavel.getText().toString());
        return lista;
    }

voce tá populando apenas o atributo date, precisa fazer os setters corretamente.