2 つの異なる種類のデータを表示するリスト ビューがあります。1 つはセパレータです。各データ型は、1 つの配列リストに格納されます。したがって、2 つのリストがあります。各リストの内容は、特別な行 (セパレーター) によって他のリストと区切られています。最初の行は区切り行でもあります。ではgetView、通常のデータ行と区切り行を区別する必要があります。
// returns true if a separator row must be displayed at pos.
private boolean isSeperator(int pos) {
return pos == 0 || pos == data.size() + 1;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater infalInflater = (LayoutInflater) this.context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if(isSeperator(position)) {
convertView = infalInflater.inflate(R.layout.list_view_seperator, parent, false);
TextView seperator = (TextView) convertView.findViewById(R.id.tv_list_view_seperator);
seperator.setText("Seperator");
}
else {
convertView = infalInflater.inflate(R.layout.my_layout, parent, false);
TextView txtview = (TextView) convertView.findViewById(R.id.foo);
ImageView icon = (ImageView) convertView.findViewById(R.id.bar);
MyData myData = (MyData) getItem(position);
txtview.setText(myData.getName());
icon.setImageBitmap(myData.getIcon());
}
return convertView;
}
まず、現在の位置にセパレーターを表示する必要があるかどうかを確認します。これはうまくいきます。
ビュー ホルダー パターンを実装しようとしましたが、常に失敗します。セパレータを含むさまざまなタイプの行を考慮する必要がある場合に、このパターンを使用する方法を誰かに教えてもらえますか?