一个界面,很多听众

时间:2012-08-22 20:58:22

标签: java android events interface listener

我有一个界面如下:

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()) ;
            }
        });

可以在许多类或对象中实现。我实现了这个,但是监听器只能在最后一个实现中使用

无论如何,谢谢!

2 个答案:

答案 0 :(得分:4)

你不能把它改成:

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

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

然后在想要通知听众时遍历列表。

答案 1 :(得分:0)

您不需要一组侦听器。只要您创建一个新的侦听器并将其附加到另一个对象,它就应该可以正常工作。

这里的问题是你可能只有一个对象“Content”的实例。每个“内容”实例都会在您的代码中设置自己的侦听器。 为什么在同一个对象中需要多个相同类型的侦听器?