0

BaseExpandableListAdapter を拡張するクラスがあります。

public class ExpandableListAdapter は BaseExpandableListAdapter を拡張します

リストビューでアイテムが再利用されているので、それを防ぎたいです。

IGNORE_ITEM_VIEW_TYPE を使用すると OS がそれらを再利用できなくなることがわかりましたが、getItemViewType メソッドで使用する必要があります。

このコードを追加したとき:

@Override
  public int getItemViewType(int position) {
    return 0;
  }

次のエラーがあります。

メソッドはそのスーパークラスのメソッドをオーバーライドしません。

この設定を使用して、ExpandableList がアイテムを再利用できないようにするにはどうすればよいですか?

4

1 に答える 1

1

メソッドはそのスーパークラスのメソッドをオーバーライドしません。

これは、 aBaseExpandableListAdapterが a と同じインターフェイスを共有していないBaseAdapterため、メソッドをオーバーライドできないために発生しています。BaseExpandableListAdapterビュー タイプに対して同様のメカニズムを公開しますが、グループ ビュー タイプと子ビュー タイプに分かれているため、ビュー タイプ処理システムを変更するには、以下のメソッドの 1 つ (またはすべて) をオーバーライドする必要があります。

getChildType(int groupPosition, int childPosition) - 子行のビュー タイプ

getGroupType(int groupPosition) - グループ行のビュー タイプ

為に:

IGNORE_ITEM_VIEW_TYPE を使用すると、OS がそれらを再利用できなくなることがわかりました。

いいえ、そうではありません。再利用されるビューのタイプが重要ではないことをアダプターに伝えるだけです。ビューの再利用を停止したい場合は、getChildView()and/orで新しい行ビューを作成するだけですgetGroupView()(そのためif (convertView == null)...、そこにコードはありません)。ただし、これはパフォーマンスに影響します。

于 2013-09-06T10:32:57.933 に答える