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

jt1*_*123 1 android android-arrayadapter android-listview

我有一个普通的ListView:

<ListView
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:dividerHeight="10dp" />
Run Code Online (Sandbox Code Playgroud)

然后用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);
Run Code Online (Sandbox Code Playgroud)

DataSourceHandler.getAlertsList()向我返回对象的ArrayList,在我的ListView中,我现在看到类似以下两项:

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

这两个Alert对象具有一个名为getName()的方法,该方法返回一个String,我希望将其用作列表中该项目的显示名称,而不是上面的内容。

我怎样才能做到这一点?

Ego*_*gor 5

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