如何指定要用于ListFragment的ArrayAdapter的哪个字符串?

时间:2013-02-07 03:42:11

标签: android android-arrayadapter android-listfragment

我有一个简单的ListFragment来显示自定义对象列表。

MyListFragment extends ListFragment

private ArrayList<CustomObject> mArrayOfCustomObject;
private ArrayAdapter<CustomObject> mAdapter;

mAdapter = new ArrayAdapter<CustomObject>(context,
    android.R.layout.simple_list_item1,
    mArrayOfCustomObject);
setListAdapter(mAdapter);

问题在于我得到一个如下所示的长列表:

com.example.CustomObject@40XXXXXX
com.example.CustomObject@40XXXXXX
com.example.CustomObject@40XXXXXX
com.example.CustomObject@40XXXXXX
....

我这样做是因为我希望能够点击一个项目并显示更多相关信息。这就是我将适配器链接到List<CustomObject>而不是List<String>

的原因

我知道List<String>会正确显示它,但是每个项目只是一个随机字符串,与它的CustomObject没有任何关联。

解决这个问题的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

除了创建自己的自定义适配器之外,为了便于修复,只需覆盖toString()中的CustomObject方法,并让它返回可读的内容。当您使用的适配器填充其行时,它会在您的CustomObject上调用toString(),然后显示该结果。

假设您的CustomObject中有一个名为timePassed

的字段
long timePassed = 100000l;
@Override
  public String toString()
  {
    return "Time passed: " + timePassed + " milliseconds";
  }