让ArrayAdapter包含对象列表,以在ListView中显示包含字符串的对象

时间:2014-03-22 19:10:22

标签: android android-listview android-arrayadapter

我有一个普通的ListView:

<ListView
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:dividerHeight="10dp" />

我使用Alert对象的ArrayList填充listview:

// Get ListView object from XML
listView = (ListView) findViewById(android.R.id.list);

// Create a new Adapter
ArrayAdapter<Alert> adapter = new ArrayAdapter<Alert>(this, android.R.layout.activity_list_item, android.R.id.text1, DataSourceHandler.getAlertsList());

// Assign adapter to ListView
listView.setAdapter(adapter);

DataSourceHandler.getAlertsList()向我返回对象的ArrayList,在我的ListView中,我现在看到两个这样的项目:

  • path.to.object@41a92a48
  • path.to.object@41a92cc8

这两个Alert对象有一个名为getName()的方法,它返回一个String,我想用它作为列表中此项的显示名称,而不是我上面提到的。

我该怎么做?

2 个答案:

答案 0 :(得分:4)

正如评论中已经提到的那样,标准ArrayAdapter实现会对列表中的每个对象调用toString(),并使用生成的String填充视图。最简单的解决方案是通过在其中调用toString()方法来覆盖getName()。如果它不符合您的需求,那么您应该创建一个自定义适配器。

答案 1 :(得分:2)

是的,覆盖toString()是解决方案,例如:

Example