2

现在,我使用面向对象的形式获得我的模型。为了将它们绑定到我的List,我必须使用listAdapter。我只能用愚蠢的ArrayLists填充这个ListAdapter吗?因为这意味着,我必须迭代我的ModelCollection,并再次从我的模型中提取所有数据。因此,我从模型中分离我的数据,并且如果modelCollection中的某些机会(如通过新Items/pagination变大),我不能轻松刷新listView中的数据。Android:将数据绑定到ListView而无需为ListAdapter准备ArrayList?

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

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

回答

0

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

编写您自己的自定义ListAdapter实现,或许可以延伸BaseAdapter,它适用于您的现有集合。

撇开一个问题:当我想在列表标题下添加小字幕 时,我该如何扩展代码?但是你想

getView()在自定义ListAdapter实现可以格式化你行,包括使用多个数据段。

+1

我推荐这款tuturial:http://www.softwarepassion.com/android-series-custom-listview-items-and-adapters/ – OneWorld 2010-10-05 13:35:18