我正在尝试从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();
}
}