Android 在我的列表视图中获取子项
在我的项目列表视图中,我得到了提要的标题,但我想得到该列表视图中子项目的描述、图像和链接。你能帮助我吗? 这就是我所拥有的: 1)Android 在我的列表视图中获取子项,android,listview,subitem,Android,Listview,Subitem,在我的项目列表视图中,我得到了提要的标题,但我想得到该列表视图中子项目的描述、图像和链接。你能帮助我吗? 这就是我所拥有的: 1) main活动中的ListView ArrayAdapter<RSSItem> adapter; adapter = new ArrayAdapter<RSSItem>( this, android.R.layout.simple_list_item_1, myRssFeed.getList() ); setListAd
main活动中的ListView
ArrayAdapter<RSSItem> adapter;
adapter = new ArrayAdapter<RSSItem>(
this,
android.R.layout.simple_list_item_1,
myRssFeed.getList()
);
setListAdapter(adapter);
只需使用自定义的阵列适配器
。它非常简单:
1) 定义您的自定义ArrayAdapter
。填写getView()
的正文,根据传递给适配器的每个项目创建一个视图
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);
}
}
这里要认识到的重要一点是,当ListView通过Adapter.getView()
请求视图时,Adapters
将数据列表转换为实际的UI视图。在本例中,您正在创建一个自定义的ArrayAdapter
,因此您可以控制它返回的视图的所有内容。您可以返回一个具有自己布局的视图,该视图包含RSSItem包含的许多不同的数据段,并以您想要的任何格式显示它们。很酷的一点是,通过使用ListView
和自定义ArrayAdapter
,您不必担心创建或销毁这些视图——这一切都由您来完成。因此,如果您从ArrayAdapter.getView()
返回的项目包含位图,您就不必太担心内存不足 谢谢你的回答,但我的意思是我想要列表视图项的标题(可能用粗体),以及列表视图子项的说明和其他内容。我不确定我是否理解你的意思,但这段代码允许你这样做。在YourView
构造函数中,可以从YourDataObject
中提取标题,将其设置为粗体,并以不同的方式设置描述的样式。请记住,您从getView()
返回的视图可以包含任意数量的嵌套视图,您甚至可以为此视图膨胀布局,并将数据对象中的值粘贴到其中。请原谅,我很烦人,但我无法理解。你能给我举一个得到描述的例子吗。我没有得到结果,你能编辑你的问题,包括一些格式良好的代码吗?1) 包含要显示的数据的类。2) 您希望在每个列表项中实现的布局的一般描述,或实际的layout.xml(如果可能)。这是什么意思?不是吗?
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);
}
}
YourArrayAdapter<RSSItem> adapter = new YourArrayAdapter<RSSItem>(this);
adapter.addAll(myRssFeed.getList());
setListAdapter(adapter);