0

SimpleAdapter クラスを拡張しようとする場合は、コンストラクターを公開する必要があることに気付きました -

public MySimpleAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to) {
    super(context, data, resource, from, to);
}

しかし、これにより、誰か (または i) が誤って新しいアダプターを作成する可能性がありますよね?

アダプターですべてのデータとメソッドを静的にしようとしましたが、正しい方法ではないようです...? 申し訳ありませんが、うるさいというつもりはありません。誰かが MySimpleAdapter のインスタンスを誤ってインスタンス化してほしくないだけです

このクラスをシングルトンにするにはどうすればよいですか?

私が SimpleAdapter を使用している方法は、動的に縮小/拡大するリストビューで必要なすべてのオブジェクトを保持するコンテナーとして使用することです。アプリのどの時点でも、そのようなコンテナーは 1 つだけ存在する必要があります。私はこの問題に正しく取り組んでいますか?

4

2 に答える 2

1

アダプターを静的シングルトンにしたくはありません。これは、コンテキストへの参照があるためです。アダプタを静的にすることで、コンテキストがガベージコレクションされることはありません。

どちらかといえば、の静的インスタンスを保持する必要がありますList。各アクティビティで、共有リストへの参照を渡すだけで、すぐに使用できます。

于 2012-02-03T04:39:11.423 に答える
1

なぜコンストラクターを公開する必要があるのですか? シングルトンにしたい理由を無視して、SimpleAdapter を拡張するクラスにプライベート コンストラクターがあり、シングルトン パターンを実装するパブリック createInstance() メソッドがあると宣言することは完全に可能です。

于 2012-02-03T04:32:09.983 に答える