一个类中的多个侦听器

时间:2013-06-11 15:12:39

标签: android interface listener

我想每个人都知道监听器接口模式。我有一个类,其中包含用户可以添加或删除的一些喜欢的项目。

在这堂课中,我有:

public static OnFavsChangedListener onFavsChangedListener; 

public interface OnFavsChangedListener {
    abstract void onFavsChanged();
}

public static void setOnFavsChangedListener(
        OnFavsChangedListener listener) {
    onFavsChangedListener = listener;
}

public void addToFavorites () {
    if (onFavsChangedListener != null) {
        onFavsChangedListener.onFavsChanged()
    }
}

当我只需要使用其中一个监听器时,这很有用,当我使用来自不同setOnFavsChangedListener的{​​{1}}时,它们将覆盖最后一个。{1}}。

我的想法是使用Activities听众,并在我的收视率发生变化时将其全部调用,但很难让ArrayList变得过大(ArrayList可能会在每个方向更改/ Activities)上添加一个侦听器。我可以使用onCreate ID和听众,让每个HashMap y删除它的监听器Activit,但这看起来很笨拙。

TL; DR:当我的Favs发生变化时,几个onDestroy被告知的优雅方式是什么?

1 个答案:

答案 0 :(得分:3)

这对您的用例可能有点过分,但是为了通知类有关事件我使用事件总线(特别是https://github.com/greenrobot/EventBus)。

这使您可以简单地发布消息,并且已注册接收该类消息的每个类都可以获取该消息。使用起来非常简单,就图书馆来说还要小。