通知多个适配器的最佳方式



想象一下这个场景:

FragmentA extends Fragment{
....
AdapterA adapter = new AdapterB(items);
...
}
FragmentB extends Fragment{
....
AdapterB adapter = new AdapterB(items);
...
}
FragmentC extends Fragment{
....
AdapterC adapter = new AdapterC(items);
...
}
FragmentD extends Fragment{
....
AdapterD adapter = new AdapterD(items);
...
}

所有这些片段都通过TabLayout显示。

当用户在中执行操作时,例如FragmentD,应该更新其他片段的适配器。

您认为对所有适配器进行"通知"的最佳方式是什么?我正在考虑为这种行为实现一个观察者模式,但我不知道是否有更好的方法。

Observer似乎是个不错的主意。在这种特殊情况下,规范观察者的问题是片段生命周期:您必须正确地订阅/取消订阅子片段中的可观察对象。您可能还需要将更新传递到当前已停止的片段。所以我建议你也考虑使用这样或这样的事件总线。

您可以使用Observer设计模式:

https://www.geeksforgeeks.org/observer-pattern-set-2-implementation/?ref=rp

您将需要一个onservable对象,该对象将提供3种方法:-订阅(Observable o(-取消订阅(Observable o(-notifyAll(对象更新对象(

然后为每个片段创建一个Observer对象-它们应该有一个"update(object updateObj("方法,以便在主题/可观察对象发生变化时做出反应。

首先,所有的观察者/订阅者都应该订阅observable。当一个片段发生更改时,您可以调用observable的notifyAll方法来通知其他片段

最新更新