0

私は次のようなインターフェースを持っています:

public interface OnLoadDrawableListener {
    public abstract void onGetDrawable();
}

そして、それを実装する「Content」という名前のクラスがあります:

private OnLoadDrawableListener dListener = null;

public void setOnLoadDrawableListener(OnLoadDrawableListener nListener) {
    dListener = nListener;
}

次に、次の内容が必要です。

content.setOnLoadDrawableListener(new OnLoadDrawableListener() {

            public void onGetDrawable() {
                imageResultItem.setImageDrawable(content.getImageDrawable()) ;
            }
        });

多くのクラスまたはオブジェクトで実装できます。私はそれを実装しましたが、リスナーは最後の実装でのみ機能します

とりあえずありがとう!

4

2 に答える 2

4

次のように変更できませんでした:

private List<OnLoadDrawableListener> dListeners = new ArrayList<OnLoadDrawableListener>();

public void addOnLoadDrawableListener(OnLoadDrawableListener nListener) {
    dListeners.add(nListener);
}

リスナーに通知したい場合は、リストを繰り返し処理します。

于 2012-08-22T21:01:11.030 に答える
0

リスナーの配列は必要ありません。新しいリスナーを作成して別のオブジェクトにアタッチする限り、正しく動作するはずです。

ここでの問題は、おそらくオブジェクト「コンテンツ」のインスタンスが 1 つしかないことです。「コンテンツ」の各インスタンスには、コードで設定した独自のリスナーがあります。同じオブジェクトに同じタイプのリスナーが複数必要になるのはなぜですか?

于 2012-08-22T21:04:53.397 に答える