私はListAdapter(CustomAdapter)をサブクラスの専門アダプタを必要とリストビューのサブクラスを作成しています。 setAdapterとgetAdapterメソッドは、プログラマがAdapterViewで使用する予定の標準メソッドであるため、保持したいと考えています。それはまだListAdapterを返すようListViewのサブクラス:基本的なJavaのQ
@Override
public CustomAdapter getAdapter() {...}
:
私はゲッターをオーバーライドすることができます。しかし、私はセッターを無効にすることはできません:
@Override
public void setAdapter(CustomAdapter adapter) {...}
私はなぜこれをさせてくれないのですか?だから、今、それを回避するために、私はこれを実行します。
@Override
public void setAdapter(ListAdapter adapter) {
throw new UnsupportedOperationException("adapter must be an instance of CustomAdapter");
}
public void setAdapter(CustomAdapter adapter) {
this.adapter = adapter;
}
を、私は、これは大したことではないと思いますが、バグは私のそれが一種。元のListAdapterセッター(特にオートコンプリートリストに表示されているので)を公開するのは面倒です。元のセッターを抑制する方法はありますか?または上記のブロックがこれを行う正しい方法ですか?
おかげで、
私はListAdapterのimplsを行うことができないことをCustomAdapter何が特別であったのかに興味がありますか? – user802421
カスタムlistViewはドリルダウンリストなので、customAdapterは(データの遅延取得に関連する)データ階層内で上下に移動するメソッドを公開する必要があります。 – noobler