0

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単純な方法でアイテムを参照することはできません。それは論理的です。positionArrayList

多くのアプリがヘッダーと行の両方を表示するためにを使用しているのを見てきましたがListView、これに最適なコレクション/パターンがわかりません。

ありがとう。

4

1 に答える 1

0

サミールのコメントとによると:

ArrayListカスタムインターフェイスの作成と。2つのクラスを作成します-RowそしてSectionそのカスタムインターフェイスを実装し、のgetViewメソッドで行を返すときBaseAdapterに、その位置のリスト内のオブジェクトがaであるRowか。であるかに基づいて、正しいビュー、つまり行またはセクションを返しますSection

于 2012-08-29T11:21:22.463 に答える