Android" new"声明不起作用。循环继续使用相同的对象

时间:2016-07-25 19:53:02

标签: java android sqlite android-studio

我正在尝试从SQLite数据库中的查询创建Android(java)中的对象列表。代码如下:

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

    List<Aluno> alunos = new ArrayList<Aluno>();
    Aluno aluno = null;
    while (c.moveToNext()) {
        aluno = new Aluno();//new using same object aways
        aluno.setId(c.getLong(c.getColumnIndex("ID")));
        aluno.set_nome(c.getString(c.getColumnIndex("NOME")));
        aluno.set_endereco(c.getString(c.getColumnIndex("ENDERECO")));
        aluno.set_telefone(c.getString(c.getColumnIndex("TELEFONE")));
        aluno.set_site(c.getString(c.getColumnIndex("SITE")));
        aluno.set_nota(c.getFloat(c.getColumnIndex("NOME")));

        alunos.add(aluno);
    }

    c.close();
    return alunos;
}

当我尝试调试时,我在第二次迭代开始时得到这些信息(注意:我已经覆盖了Aluno.toString()以显示对象中的一些信息): first print

然后,当我走几步时,我可以看到相同的对象被改变了(看看ArrayList alunos):second print

该代码的结果是一个列表,其中列表中的所有对象具有相同的值。

提前感谢所有帮助。 编辑: Aluno代码

package com.muffinalunos.muffinmad.muffinalunos.modelo;

public class Aluno {

private static long _ID;
private static String _nome;
private static String _endereco;
private static String _telefone;
private static String _site;
private static float _nota;

public Aluno(){

}

public static long getId() {
    return _ID;
}

public static void setId(long Id) {
    _ID = Id;
}

public static String get_nome() {
    return _nome;
}

public static void set_nome(String _nome) {
    Aluno._nome = _nome;
}

public static String get_endereco() {
    return _endereco;
}

public static void set_endereco(String _endereco) {
    Aluno._endereco = _endereco;
}

public static String get_telefone() {
    return _telefone;
}

public static void set_telefone(String _telefone) {
    Aluno._telefone = _telefone;
}

public static String get_site() {
    return _site;
}

public static void set_site(String _site) {
    Aluno._site = _site;
}

public static float get_nota() {
    return _nota;
}

public static void set_nota(float _nota) {
    Aluno._nota = _nota;
}

@Override
public String toString() {
    return getId()+" - "+get_nome();
}

}

0 个答案:

没有答案