使用ArrayList <object> </object>填充ListView

时间:2013-06-05 10:19:15

标签: android arraylist android-listview android-arrayadapter

我正在尝试使用ArrayList填充ListView。 ArrayList包含Usuarios对象。 Usuario有两个字段(String nombre,String edad)。 这是我的代码:

ListView listview = (ListView) findViewById(R.id.ListView1);
ArrayList<Usuario> listaUsuarios = (ArrayList<Usuario>) dao.showAll();

ArrayAdapter<Usuario> adapter = new ArrayAdapter<Usuario>(this, android.R.layout.simple_list_item_1, listaUsuarios);
listview.setAdapter(adapter);

当我测试我的Android应用时,它看起来像这样:

enter image description here

ListView没有显示Usuario字段(nombre,edad),它显示了es.dga.sqlitetest.Usuario@43e4 ...

任何人都可以帮助我吗?感谢

4 个答案:

答案 0 :(得分:4)

您应该为toString()提供Usuario方法。类似的东西:

@Override
public String toString() {
 return this.label;
}

答案 1 :(得分:2)

您在屏幕截图中看到的是列表中对象的内存地址。 ArrayAdapter的默认行为是在数组中的每个对象上调用toString()方法。如果您不覆盖toString()方法,则会得到此结果的默认值。

快速解决方案

覆盖toString()对象中的Usuario方法:

class Usuario {
    // whatever you already had in place

    // the name to display in the list
    private String name = "some default value";

    public String toString(){
        return this.name;
    }
}

更好的解决方案

创建具有Usuario个对象集合的自定义适配器,以便您可以对视图进行充气并准确显示所需的详细信息。一些好的信息herehere

答案 2 :(得分:1)

您似乎正在调用toString()对象上的内置 Usuario函数。

您需要覆盖它以实现自己的内容,您可以从中检索对象的各个字段(可能使用mObject.getNombre()mObject.getEdad()this.label之类的内容。

答案 3 :(得分:0)

希望这会有所帮助 http://developer.android.com/guide/topics/ui/layout/listview.html
另请查看ArrayAdapter接口:

  ArrayAdapter(Context context, int textViewResourceId, List<T> objects)