我有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
来显示标题和行,但我还没有理解哪种集合/模式最适合这种情况。
感谢。
答案 0 :(得分:0)
根据Samir的评论和example:
创建自定义界面ArrayList
。创建两个实现该自定义接口的类Row
和Section
,然后在getView
的{{1}}方法中返回行时,返回正确的视图,即行或节根据该位置列表中的对象是BaseAdapter
还是Row
。