Android:将数据绑定到ListView而不为ListAdapter准备ArrayLists?

时间:2010-09-14 14:12:06

标签: android listactivity listadapter android-listview expandablelistadapter

现在,我以一种漂亮的面向对象的形式获得了我的模型。为了将它们绑定到我的List,我必须使用listAdapter。我可以只使用愚蠢的ArrayLists填充此listAdapter吗?因为这意味着,我必须迭代我的ModelCollection并再次从我的模型中提取所有数据。

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

是否存在比我现在使用的更智能的方式?我可以将我的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);

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

1 个答案:

答案 0 :(得分:0)

  

是否存在比我现在使用的更聪明的方式?

编写您自己的自定义ListAdapter实施,可能会扩展BaseAdapter,适用于您现有的馆藏。

  

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

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