at com.example.nbrasil.geradorsuntech.DAO.ListaDAO.buscaLista(ListaDAO.java:67) at com.example.nbrasil.geradorsuntech.ListaMainActivity.onCreate(ListaMainActivity.java:28)
at com.example.nbrasil.geradorsuntech.DAO.ListaDAO.buscaLista(ListaDAO.java:67) at com.example.nbrasil.geradorsuntech.ListaMainActivity.onCreate(ListaMainActivity.java:28)
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.