0

我有一个BaseAdapter管理我的行的ListView. 所有这一切,而我一直在列表视图中显示记录,没有任何分组或标题,它运行良好。我的适配器对一组未分组的数据使用ArrayListand ,它工作得很好。这是它的样子:

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

理想情况下,我可以使用 a HashMap,因为我可以将我的数据分组并将每个组的数据存储在地图中的一个键下,但我不能使用;尽可能HashMap简单地引用项目。这是合乎逻辑的。positionArrayList

我见过很多应用程序ListView都使用 来显示标题和行,但我不明白什么集合/模式最适合这个。

谢谢。

4

1 回答 1

0

根据 Samir 的评论和示例

创建ArrayList一个自定义接口。创建两个类 -Row实现Section该自定义接口,然后在返回 的getView方法中的行时BaseAdapter,返回正确的视图,即基于该位置列表中的对象是 aRow还是 a 的行或部分Section

于 2012-08-29T11:21:22.463 回答