【问题标题】:Android: Bind data to a ListView without preparing ArrayLists for the ListAdapter?Android:将数据绑定到 ListView 而不为 ListAdapter 准备 ArrayLists?
【发布时间】:2010-09-14 14:12:06
【问题描述】:

现在,我的模型采用了很好的面向对象形式。为了将它们绑定到我的列表,我必须使用 listAdapter。我只能用愚蠢的 ArrayLists 填充这个 listAdapter 吗?因为这意味着,我必须遍历我的 ModelCollection 并再次从我的模型中提取所有数据。

所以,我将我的数据从模型中分离出来,我无法轻松地刷新我的 listView 中的数据,如果 modelCollection 中有机会(比如通过新项目/分页变得更大)。

是否存在比我现在使用的更智能的方法?我可以更直接地将我的 ModelCollection 绑定到 listView 吗?

    ModelCollection modelCollection = ModelCategory.findAll();

    /*
     * Prepare Data for Adapter
     */
    ArrayList<String> itemTitles = new ArrayList<String>();

    // Iterate over my ModelCollection and pull all the Data from each Model
    for (int i = 0; i < modelCollection.items.size(); i++) {

      if (modelCollection.items.get(i) != null) {

        // TODO: Cant I bind my Models directly to the List without creating this ArrayList? 
        itemTitles.add(((ModelCategory) modelCollection.items.get(i)).getTitle());       

      }
    }

    /*
     * Create Adapter and bind Array
     */
    adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, itemTitles  );
    setListAdapter(adapter);

还有一个问题:当我想在列表标题下方添加小字幕时,如何扩展我的代码?

【问题讨论】:

    标签: android listactivity listadapter android-listview expandablelistadapter


    【解决方案1】:

    是否存在比我现在使用的更智能的方法?

    编写您自己的自定义ListAdapter 实现,可能扩展BaseAdapter,它适用于您现有的集合。

    还有一个问题:当我想添加小字幕时,如何扩展我的代码 在列表标题下方?

    您的自定义ListAdapter 实现中的getView() 可以根据需要设置行的格式,包括使用多条数据。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-07
    • 1970-01-01
    • 2016-08-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-03
    相关资源
    最近更新 更多