1

虽然我认为我已经掌握了如何使用 RxJava 的基础知识,但我在使用观察者模式时遇到了麻烦。

基本上,我想要做的是拥有一个List可以监控的静态对象,并使用列表中的添加来将此数据提交给 Web 服务。

到目前为止,我的方法只能是创建 astatic List<Object>和 a static Observable<Object>。这个 observable 是通过做一个

observable = Observable.from(listOfObjects);

然后,我在.subscribe()调用中包含了我的上传逻辑。如果我List提前设置了所有内容,这将起作用,但我想在运行时在这里和那里填充它。如果我.subscribe()再次打电话,这仍然有效,但感觉就像我这样做是做错了什么。我以为我可以让现有订阅只对从可观察对象发出的任何新项目采取行动,但是当我添加到列表时似乎没有任何事情发生。

感谢您对更好/正确方法的任何见解。

4

1 回答 1

2

Observable.from(listOfObjects)将创建一个新的 observable,它将发出列表的每个对象。你也可以写Observable.just(1, 2, 3, 4)。这是同一件事。

因此,如果您将对象添加到列表中,Observable则不会收到通知。

您可以创建一个自定义列表,该列表将通知您Observable新添加的项目。您将看到他的主题非常接近的解决方案:如何在 RxJava 中的动态列表上创建观察者?

但是,你可以骑你的名单,也许用 aSubject代替?无需将对象添加到列表中,只需调用theSubject.onNext方法即可。

请注意,只有在添加项目时才会通知您。删除项目时不会通知您。如果您愿意,您Observable不应该发出添加的项目,而是发出带有关联状态的项目 : new Added<Object>(item)new Removed<Object>(item)例如。

于 2015-03-04T09:36:19.277 回答