4

我有代码可以使用Observables.combineLatest监听三个字段

Observables.combineLatest(text_name.asObservable(),text_username.asObservable(), text_email.asObservable()).subscribe({ t ->
            if (t.first.toString() != currentName || t.second.toString() != currentUsername) {
                startActionMode()
            } else {
                finishActionMode()
            }
        })

但是当我向Observables.combineLatest添加另一个参数时,它会出现错误,因为只能传递 3 个内联参数。

现在我希望在Observables.combineLatest的参数列表中传递 4 个参数。我知道应该使用数组或列表来完成,作为参数传入,但我很难使用Kotlin弄清楚。

帮帮我..提前谢谢..

4

1 回答 1

2

如果你想组合超过 3 个 observables,你需要添加一个 combine 函数。你可以做这样的事情。

    Observables.combineLatest(
            first.asObservable(),
            second.asObservable(),
            third.asObservable(),
            forth.asObservable()
    )
    // combine function
    { first, second, third, forth->
        // verify data and return a boolean
        return@subscribe first.toString() != currentName || second.toString() != currentUsername
    }
    .subscribe({ isValid->
                   if (isValid) {
                       startActionMode()
                   } else {
                       finishActionMode()
                   }
               })

在 combine 函数中,您可以验证您的数据并返回一个布尔值。然后在订阅中,您可以根据该布尔值采取行动

于 2018-02-22T08:12:25.433 回答