在我的列表视图中获取子项

时间:2013-10-21 21:21:59

标签: android listview subitem

在我的ITEM列表视图中,我获得了Feed的标题,但我希望在该列表视图的SUBITEM中获取描述,图像和链接。你能帮助我吗? 这就是我所拥有的:

1)ListView

中的MainActivity
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;
    }
}

1 个答案:

答案 0 :(得分:2)

只需使用自定义ArrayAdapter即可。这非常简单:

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

    }
}

2)将适配器传递给ListView,然后添加数据。

YourArrayAdapter<RSSItem> adapter = new YourArrayAdapter<RSSItem>(this);
adapter.addAll(myRssFeed.getList());
setListAdapter(adapter);

要实现的重要一点是当ListView通过Adapters请求视图时Views将数据列表转换为实际的UI Adapter.getView()。在这种情况下,您正在创建自定义ArrayAdapter,因此您可以控制它返回的View的所有内容。您可以返回具有自己布局的视图,并包含RSSItem包含的许多不同数据,并以您希望的任何格式显示它们。很酷的是,通过使用ListView和自定义ArrayAdapter,您永远不必担心创建或销毁这些视图 - 这些都是为您完成的。因此,如果从ArrayAdapter.getView()返回的项目包含位图,则无需过多担心内存不足。