如何使用对象填充ArrayAdapter?

时间:2014-01-07 23:55:24

标签: java android listview listadapter

我有一个像这样的POJO:

public class Color {
 private int id;
 private int name;
 //getter setter
}

在我的AsyncTask中,我调用服务器并获取大量这些对象,然后想要填充我的列表。我是这样做的:

    @Override
    protected String doInBackground(String... strings) {
        colorsList = MyManager.INSTANCE.getService().getColors();
        return null;
    }

    @Override
    protected void onPostExecute(String file_url) {
        setListAdapter(new ArrayAdapter<Color>(MyActivity.this,R.layout.list_black_text,R.id.name, colorsList));
    }

list_black_text如下所示:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <!-- hidden color id-->
    <TextView
    android:id="@+id/color_id"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:visibility="gone" />

    <!--color name-->
    <TextView
        android:id="@+id/name"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textSize="16dip"
        android:textColor="#000000"
        android:paddingTop="15dip"
        android:paddingBottom="15dip"
        android:paddingLeft="10dip"
        android:textStyle="bold"/>
</RelativeLayout>

问题

当我运行应用程序时,列表似乎是由对象填充的,所以我看到它填充了像

这样的东西
com.my.package.Color@2343fa0
com.my.package.Color@2343fa0
...

我需要更改哪些内容才能看到列表中颜色的名称?

注意:我不想创建单独的字符串数组。我试过了,它的确有效。但我还要求能够检测用户点击颜色名称时点击了哪种ID颜色。

1 个答案:

答案 0 :(得分:0)

该列表使用传递的对象的toString方法进行显示。因此,如果要显示颜色名称,只需添加名称变量,覆盖toString方法并返回颜色名称。

public class Color {
    private int id;
    private int name;
    private String strName;
    public String toString(){return this.strName;}
    //getter setter
}