Android ListActivity值是对象,要显示字符串
我有一个ListActivity,它当前正在显示类型数据对象的列表。这些类型数据对象具有自定义数据:Android ListActivity值是对象,要显示字符串,android,Android,我有一个ListActivity,它当前正在显示类型数据对象的列表。这些类型数据对象具有自定义数据: String title; 以下内容在我的ListActivity构造函数中: List<Data> values = dataInterface.getAllData(); ArrayAdapter<Data> adapter = new ArrayAdapter<Data>(this, android.R.layout.simple_list_
String title;
以下内容在我的ListActivity构造函数中:
List<Data> values = dataInterface.getAllData();
ArrayAdapter<Data> adapter = new ArrayAdapter<Data>(this,
android.R.layout.simple_list_item_1, values);
setListAdapter(adapter);
等等
我知道这些是数据对象的对象id。相反,我想显示Data.title中的字符串。我不知道如何完成此操作。在适配器中:
holder.myTextview.setText(getItem(position).getTitle());
该点位于getItem(位置).getTitle()
,因为您的自定义适配器扩展了ArrayAdapter
,getItem(位置)
将返回数据的实例
之后,您只需要使用getTitle()从数据中获取标题代码>(取决于数据类中的setter-getter)
如果您不理解某些内容或我不理解您,请发表评论:)如果您不想使用自定义适配器,请在数据
类中定义公共字符串toString()
方法,如下所示:
public String toString {
return title;
}
当ArrayAdapter在ListView中表示对象时,它将被ArrayAdapter使用。我认为数据类必须在其内部有一个getter和setter方法,对吗?如果您有模型类,则需要使用您的ArrayList.get(position).getTitile()
。如果您没有任何此类类,则需要使用toString()
。这非常有效。这被认为是黑客行为吗?不,它的目的是toString()
返回对象作为字符串的表示形式。Android的预定义适配器无法确切知道要显示对象的哪些属性,因此它们依赖于toString()
,显示对象本身。如果未设置toString()
,则使用父对象
类的实现,即ClassName@instanceId
。如果您想要更好地表示对象,请定义一个自定义适配器,并在getView()
方法中执行您想要的操作。我认为这不是最好的方法,因为有时您的类中会有多个字符串,如“author name”和“title”(无意冒犯,我对您的答案投了赞成票)。当然,在这种情况下,您需要自定义适配器。当您想要自定义布局时,还需要自定义适配器,而不仅仅是文本。如果OP只想显示标题并保持简单的布局,那么我的解决方案是最简单的。
public String toString {
return title;
}