在我的 ITEM ListView 中,我获得了提要的标题,但我想在该 ListView 的 SUBITEM 中获得描述、图像和链接。你能帮助我吗? 这是我的:
1) MainActivity
中的ListView
ArrayAdapter<RSSItem> adapter;
adapter = new ArrayAdapter<RSSItem>(
this,
android.R.layout.simple_list_item_1,
myRssFeed.getList()
);
setListAdapter(adapter);
2) RSSItem
public class RSSItem {
private String title = null;
private String description = null;
private String link = null;
private String pubdate = null;
RSSItem(){}
void setTitle(String value) {
title = value;
}
void setDescription(String value) {
description = value;
}
void setLink(String value) {
link = value;
}
void setPubdate(String value) {
pubdate = value;
}
String getTitle() {
return title;
}
String getDescription() {
return description;
}
String getLink() {
return link;
}
String getPubdate() {
return pubdate;
}
public String toString() {
//TODO Auto-generated method stub
return title;
}
}
最佳答案
只需使用自定义 ArrayAdapter
。非常简单:
1) 定义您的自定义 ArrayAdapter
。填写 getView()
的主体以根据您传递给适配器的每个项目创建 View ;
public class YourArrayAdapter<YourDataObject> extends ArrayAdapter<T> {
public YourArrayAdapter(Context context) {
super(context, 0); // Pass in 0 because we will be overriding getView()
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// getView() gets called when this item becomes visible in the ListView
// All you have to do is build a view with your data object and return it.
YourDataObject yourDataObject = getItem(position);
YourView view = new YourView(yourDataObject);
}
}
2) 将适配器传递给您的 ListView
,并添加数据。
YourArrayAdapter<RSSItem> adapter = new YourArrayAdapter<RSSItem>(this);
adapter.addAll(myRssFeed.getList());
setListAdapter(adapter);
这里要意识到的重要一点是,当 ListView 通过 Adapter.getView()< 请求 View 时,
。在这种情况下,您正在创建自定义 Adapter
会将数据列表转换为实际的 UI Views
/ArrayAdapter
,因此您可以控制它返回的有关 View
的所有内容。您可以返回一个 View ,它有自己的布局,包括 RSSItem 包含的许多不同的数据 fragment ,并以您想要的任何格式呈现它们。很酷的是,通过使用 ListView
和自定义 ArrayAdapter
,您永远不必担心创建或销毁这些 View - 这一切都为您处理。因此,如果您从 ArrayAdapter.getView()
返回的项目包含位图,则您不必太担心内存不足。
关于android - 在我的 ListView 中获取子项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19504982/