Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android ListActivity值是对象,要显示字符串_Android - Fatal编程技术网

Android 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_

我有一个ListActivity,它当前正在显示类型数据对象的列表。这些类型数据对象具有自定义数据:

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;
}