区分初始调用和下一个在flowable中发出的调用

时间:2018-02-23 15:26:12

标签: android rx-java rx-java2

我目前使用RxJava2订阅了一个可流动的方法 让我们说我有一个我订阅的方法。

public Flowable<UploadStatus> getStatusChanges() 

我将第一次调用从数据库加载所有项目状态,因此基本上会加载我的recyclerview上的所有项目。 但是一旦我订阅,我将继续从那个流动的事件。我会从确定的项目中获得个别更改,例如更改确定的项目。

我如何区别于初始加载的个别变化?

1 个答案:

答案 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))))