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

问题描述 投票:0回答:2

想象这种情况:

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中完成操作时,应更新其他片段的适配器。

您认为对所有适配器执行此“通知”操作的最佳方法是什么?我正在考虑为这种行为实现观察者模式,但是我不知道是否有更好的方法可以做到这一点。

java android
2个回答
0
投票

您可以使用观察者设计模式:

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

您将需要提供3种方法的可观察对象:-订阅(可观察o)-退订(可观察到o)-notifyAll(Object updateObj)

然后是每个片段的一个Observer对象-它们应该具有'update(Object updateObj)'方法,以便在更改主题/可观察对象时作出反应。

首先,所有观察者/订阅者都应订阅可观察对象。更改片段时,可以调用可观察对象的notifyAll方法来通知其他片段


0
投票

观察者似乎是一个好主意。在这种特殊情况下,规范观察者的问题是片段生命周期:您必须正确地订阅/取消订阅子片段中的可观察对象。您可能还需要将更新交付给当前已停止的片段。因此,我建议您考虑同时使用事件总线,例如thisthis

© www.soinside.com 2019 - 2024. All rights reserved.