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

Dúvida no Ex. 5 da Aula 4 - ArrayList e Id

Olá, fiquei com duas dúvidas:

1- Porque Array = new ArrayList ? São duas classes diferentes aí.. me confundiu.

2-Como que o Id está sendo incrementado? Na hora de colocar o ContentValues no db, nem utilizamos Id, começamos a partir de nome.. De onde vem o valor do Id no caso?

Obrigado.

4 respostas

Daniel, tudo bem ?

Em relação a essa sua primeira dúvida eu não entendi o que você quis dizer, consegue postar o código aqui para entendermos ?

O id já está sendo incrementado a cada inserção que fazemos, pois na criação da base declaramos que o campo ID é : id integer primary key ! Ao fazermos isso o SQLite já entende que ele tem que auto-increment !

Espero ter ajudado !

Abraço

Ah entendi. Não tinha conhecimento de SQLite, obrigado.

Em relação àquela dúvida, segue o código:

    public List<Aluno> buscaAlunos() {
        SQLiteDatabase db = getReadableDatabase();
        Cursor c = db.rawQuery("SELECT * FROM Alunos;", 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.setTelefone(c.getString(c.getColumnIndex("telefone")));
            aluno.setEndereco(c.getString(c.getColumnIndex("endereco")));
            aluno.setSite(c.getString(c.getColumnIndex("site")));
            aluno.setNota(c.getDouble(c.getColumnIndex("nota")));

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

        return alunos;
    }

Ela é em relação ao polimorfismo ArrayList ali, não entendi por que entrou essa classe que não estávamos trabalhando com ela.

solução!

Esse tipo List é uma interface que representa os métodos principais para as classes lidarem com uma sequência (um conjunto ordenado) de elementos. Então, como um ArrayList é uma classe que lida com um conjunto ordenado de elementos, essa classe acaba implementando a interface List.

Existem várias outras classes que implementam List, por exemplo: LinkedList, AbstractList...

Como na nossa aplicação usamos as funcionalidades principais de uma lista (adicionar, remover, buscar pela posição...), não usamos nada específico de uma ArrayList. Então, podemos nos referir ao nosso ArrayList como List, usando polimorfismo.

Mas se não usamos nada específico da ArrayList, por que usamos esse objeto então?

Se fizéssemos new List<Aluno> teríamos que implementar todos os métodos de uma List, pois ela é somente uma interface. Para evitar isso, usamos uma classe que já tem os métodos implementados, no caso a ArrayList.

Opa entendi, valeu!