Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Estou com dúvida no curso de Android: Aplicações e armazenamento de dados - Parte 1, no exercício 12 do capítulo Persistência com SQLite.

Assim como no exercício anterior, não foi apresentado qual seria a resposta correta.

2 respostas
solução!

A resposta é esta:

public class AlunoDAO {

    private SQLiteOpenHelper sqlHelper;

    private static final String DATABASE = "CadastroCaelum";
    private static final int VERSAO = 1;
    private static final String TABELA = "Alunos";

    public AlunoDAO(Context context) {
        Log.i("INFORMAÇÃO", "Criando o banco.");
        this.sqlHelper = new SQLiteOpenHelper(context,DATABASE,null,VERSAO) {

            @Override
            public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
                Log.i("INFORMAÇÃO","Dropando a tabela e recriando.");
                String ddl = "DROP TABLE IF EXISTS "+ TABELA + "; ";
                db.execSQL(ddl);

                this.onCreate(db);                
            }

            @Override
            public void onCreate(SQLiteDatabase db) {
                Log.i("INFORMAÇÃO", "Criando a tabela.");
                String ddl = "CREATE TABLE " + TABELA + "(id PRIMARY KEY, " +
                        "nome TEXT UNIQUE NOT NULL, endereco TEXT, site TEXT," +
                        " telefone TEXT, foto TEXT, nota REAL);";
                db.execSQL(ddl);

            }
        };
    }

    private ContentValues toValues(Aluno aluno){
        ContentValues values = new ContentValues();

        values.put("nome", aluno.getNome());
        values.put("endereco", aluno.getEndereco());
        values.put("site", aluno.getSite());
        values.put("telefone", aluno.getTelefone());
        values.put("nota", aluno.getNota());
        values.put("foto", aluno.getFoto());

        return values;

    }
    public void salva(Aluno aluno) {
        Log.i("INFORMAÇÃO", "Salvando aluno.");
        sqlHelper.getWritableDatabase().insert(TABELA, null, toValues(aluno));
    }

    public List<Aluno> getLista() {
        String[] colunas = {"id","nome","endereco","site","telefone","foto","nota"};

        Cursor cursor= sqlHelper.getWritableDatabase().query(TABELA, colunas, null, null, null, null, null);

        ArrayList<Aluno> alunos = new ArrayList<Aluno>();

        while(cursor.moveToNext()){
            Aluno aluno = new Aluno();

            aluno.setId(cursor.getLong(0));
            aluno.setNome(cursor.getString(1));
            aluno.setEndereco(cursor.getString(2));
            aluno.setSite(cursor.getString(3));
            aluno.setTelefone(cursor.getString(4));
            aluno.setFoto(cursor.getString(5));
            aluno.setNota(cursor.getDouble(6));

            alunos.add(aluno);
        }

        return alunos;
    }

}

A ideia é essa mesma, Guilherme! A única coisa é que a classe que herda de SQLiteOpenHelper poderia ser uma classe separada (não anônima) mesmo!