Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 有一些方法可以发出BehaviorSubject的旧项_Java_Android_Rx Java2 - Fatal编程技术网

Java 有一些方法可以发出BehaviorSubject的旧项

Java 有一些方法可以发出BehaviorSubject的旧项,java,android,rx-java2,Java,Android,Rx Java2,我有一个行为主体,像这样: private BehaviorSubject<List<Activity>> draft = BehaviorSubject.createDefault(new ArrayList<>()); private BehaviorSubject draft=BehaviorSubject.createDefault(new ArrayList()); 这个主题表示recyclerView中的项目,因此当我调用onNext方法时,一

我有一个行为主体,像这样:

private BehaviorSubject<List<Activity>> draft = BehaviorSubject.createDefault(new ArrayList<>());
private BehaviorSubject draft=BehaviorSubject.createDefault(new ArrayList());
这个主题表示recyclerView中的项目,因此当我调用onNext方法时,一些项目被添加到recyclerView中

当视图再次连接到屏幕时,问题就出现了。显然,只有最后发出的项目在recyclerView上可见

所以问题是有什么方法可以累积第一次订阅时发出的所有项目


关于

您将无法取回以前发出的物品。您必须将其存储在视图附着和分离时不会更改的变量/存储中。如果要获取以前存储的项目,则此组件不是您案例中使用的理想组件。

您正是在描述一个
ReplaySubject
ReplaySubject
将为任何新订户发出所有以前发出的值


查看大理石图。

实际上我现在正在做这件事,我只是觉得应该有更好的方法。还有其他类型的
主题。符合您的要求。您好,这是一个可行的解决方案,但这是一个奇怪的更新n倍于recyclerView。这是因为您正在使用每个项目更新recyclerView,因此最好将您的排放设置为列表,而不是在流中使用toList()