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

Aplicativo para de funcionar ao tentar carregar lista;

Após inserir o primeiro registro pelo formulário, eu fecho o app e tento abrir, porém para de funcionar. No Logcat aparece o seguinte error:

FATAL EXCEPTION: 
main Process: br.com.fixie.agenda, PID: 18792
java.lang.RuntimeException: Unable to start activity ComponentInfo{br.com.fixie.agenda/br.com.fixie.agenda.ListaActivity}: java.lang.IllegalStateException: Couldn't read row 0, col -1 from CursorWindow.  Make sure the Cursor is initialized correctly before accessing data from it.

O código do meu AlunoDAO é o seguinte:

public class AlunoDAO extends SQLiteOpenHelper {

    public AlunoDAO(Context context) {
        super(context, "Agenda", null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        String sql = "CREATE TABLE Aluno (id INTEGER PRIMARY KEY, nome TEXT NOT NULL, Endereco TEXT, telefone TEXT, site TEXT, nota REAL);";
        db.execSQL(sql);
    }

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

    public void inserir(Aluno aluno){
        SQLiteDatabase db = getWritableDatabase();
        ContentValues content = new ContentValues();
        content.put("nome", aluno.getNome());
        content.put("endereco", aluno.getEndereco());
        content.put("telefone", aluno.getTelefone());
        content.put("site", aluno.getSite());
        content.put("nota", aluno.getNota());

        db.insert("Aluno", null, content);
    }

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

        List<Aluno> alunos = new ArrayList<Aluno>();
        while(c.moveToNext()){
            Aluno aluno = new Aluno();
            aluno.setId(c.getLong(c.getColumnIndex("id")));
            aluno.setNome(c.getString(c.getColumnIndex("nome")));
            aluno.setEndereco(c.getString(c.getColumnIndex("endereco")));
            aluno.setTelefone(c.getString(c.getColumnIndex("telefone")));
            aluno.setSite(c.getString(c.getColumnIndex("site")));
            aluno.setNota(c.getDouble(c.getColumnIndex("nota")));

            alunos.add(aluno);
        }
        c.close();

        return alunos;
    }
}

Agradeço desde já a ajuda;

1 resposta
solução!

Opa pessoal. Debuguei e vi que o problema era apenas o "E" de "Endereco" no CREATE da tabela. Alterei para "endereco" e deu certo. Que bobeira. :P