我应该在适配器中使用什么集合来获取行和标题?

时间:2012-08-28 14:14:50

标签: java android android-listview android-adapter

我有BaseAdapter来管理ListView中的行。所有这一切,我一直在列表视图中显示记录,没有任何分组或标题,它已经工作正常。我的适配器使用ArrayList,对于未分组的数据集,它可以正常工作。这是它的样子:

public class SearchResultsAdapter extends BaseAdapter {

  public ArrayList<Result> objResults;

  public SearchResultsAdapter(Search ctxContext, ArrayList<Result> objResults) {
    this.objResults = objResults;
  }

  public View getView(int position, View convertView, ViewGroup parent) {    
    if (check whether it is a category) {    
      View v = mInflater.inflate(R.layout.category, null);

      final TextView sectionView = (TextView) v.findViewById(R.id.text);
      sectionView.setText("New Category");

      return v;    
    } else {
      View vewRow = mInflater.inflate(R.layout.row, null);

      TextView tvwName = (TextView) vewRow.findViewById(R.id.name);
      tvwName.setText(objResults.get(position).getName());

      return vewRow;    
    }    
  }

}

当在内部调用适配器的getView方法时,它只希望它从position的集合中返回一行。

理想情况下,我可以使用HashMap,因为我可以对数据进行分组,并将每个组的数据存储在地图中的某个键下,但我无法通过简单的HashMap引用position个项目我尽可能ArrayList; {1}}这是合乎逻辑的。

我见过很多应用使用ListView来显示标题和行,但我还没有理解哪种集合/模式最适合这种情况。

感谢。

1 个答案:

答案 0 :(得分:0)

根据Samir的评论和example

创建自定义界面ArrayList。创建两个实现该自定义接口的类RowSection,然后在getView的{​​{1}}方法中返回行时,返回正确的视图,即行或节根据该位置列表中的对象是BaseAdapter还是Row