我目前使用RxJava2订阅了一个可流动的方法 让我们说我有一个我订阅的方法。
public Flowable<UploadStatus> getStatusChanges()
我将第一次调用从数据库加载所有项目状态,因此基本上会加载我的recyclerview上的所有项目。 但是一旦我订阅,我将继续从那个流动的事件。我会从确定的项目中获得个别更改,例如更改确定的项目。
我如何区别于初始加载的个别变化?
答案 0 :(得分:1)
假设你将结果包装成这样的类:
class Wrapper {
public boolean firstLoad;
public UploadStatus uploadStatus;
//constructor omitted for brevity
}
你可以这样做:
getStatusChanges()
.map(item -> Wrapper(false, item))
.startWith(Wrapper(true, null)
.subscribe(result -> {
if(result.firstLoad) {
//show spinner
} else {
//handle normaly
}
})
另一种方法(改编自我的回答here)是使用发布。
getStatusChanges().publish(items -> items.first().map(item -> Wrapper(true, item)).concatWith(items.skip(1).map(item -> Wrapper(false, item))))