Java 一个接口,多个侦听器

Java 一个接口,多个侦听器,java,android,events,interface,listener,Java,Android,Events,Interface,Listener,我有一个如下界面: public interface OnLoadDrawableListener { public abstract void onGetDrawable(); } 我有一个名为“Content”的类,它实现了: private OnLoadDrawableListener dListener = null; public void setOnLoadDrawableListener(OnLoadDrawableListener nListener) { d

我有一个如下界面:

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()) ;
            }
        });
可以在许多类或对象中实现。我已经实现了,但是侦听器只在最后一个实现中工作


无论如何,谢谢

您不能将其更改为:

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

public void addOnLoadDrawableListener(OnLoadDrawableListener nListener) {
    dListeners.add(nListener);
}
private List dListeners=new ArrayList();
public void addOnLoadDrawableListener(OnLoadDrawableListener NLListener){
添加(nListener);
}

然后,当您要通知听众时,请反复浏览列表。

您不能将其更改为:

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

public void addOnLoadDrawableListener(OnLoadDrawableListener nListener) {
    dListeners.add(nListener);
}
private List dListeners=new ArrayList();
public void addOnLoadDrawableListener(OnLoadDrawableListener NLListener){
添加(nListener);
}

然后在需要通知侦听器时遍历列表。

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

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

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

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

问题在于需要多个观察者。您可以将各种监听器连接到不同的对象,但是除非您按照Keppil的方式进行,否则该类只能有一个监听器。那么实现是不正确的。如果观察者涵盖不同的事件,那么它们应该属于不同的类型,并且与对象一起注册。如果观察者是相同的,那么每次事件发生时都会呼叫他们。不需要一组相同类型的观察者。假设你有一个股票跟踪器,在你的数据模型中有一个值,比如说1000美元。然后假设你有多个文本视图——一个片段中有一个片段,另一个片段中有一个片段,一个片段表示为“1000美元”,另一个片段表示为“1000美元”。两个文本视图都应该观察此基础值,以便在值更改时通知它们。我想你可能会有相反的想法,因为有一个听众名单是标准的做法。啊哈,这样看起来更清楚。谢谢你的观点。没问题。:)不过,我很难举个例子,哈哈。问题是当你需要不止一个观察者的时候。您可以将各种监听器连接到不同的对象,但是除非您按照Keppil的方式进行,否则该类只能有一个监听器。那么实现是不正确的。如果观察者涵盖不同的事件,那么它们应该属于不同的类型,并且与对象一起注册。如果观察者是相同的,那么每次事件发生时都会呼叫他们。不需要一组相同类型的观察者。假设你有一个股票跟踪器,在你的数据模型中有一个值,比如说1000美元。然后假设你有多个文本视图——一个片段中有一个片段,另一个片段中有一个片段,一个片段表示为“1000美元”,另一个片段表示为“1000美元”。两个文本视图都应该观察此基础值,以便在值更改时通知它们。我想你可能会有相反的想法,因为有一个听众名单是标准的做法。啊哈,这样看起来更清楚。谢谢你的观点。没问题。:)不过,我不擅长举出例子,哈哈。