繁体   English   中英

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

[英]Best way to notify multiple adapters

想象一下这个场景:

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 中执行操作时,应更新其他 Fragment 的适配器。

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

观察者似乎是一个可靠的想法。 在这种特殊情况下,规范观察者的问题是片段生命周期:您必须正确订阅/取消订阅子片段中的可观察对象。 您可能还需要为当前停止的片段提供更新。 所以我建议你也考虑使用这样这样的事件总线。

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

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

您将需要一个 onbservable object,它将提供 3 种方法: - subscribe(Observable o) - unsubscribe(Observable o) - notifyAll(Object updateObj)

然后是每个片段的观察者 object - 当主题/可观察对象发生更改时,它们应该有一个“更新(对象更新对象)”方法来做出反应。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM