我有使用 Observables.combine最新的来监听三个字段的代码

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个参数。 。

帮帮我..提前谢谢..

最佳答案

如果要合并三个以上的可观察对象,则需要添加合并函数。你可以做这样的事情。

    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函数中,您可以验证数据并返回 bool(boolean) 值。
然后在订阅中,您可以根据该 bool(boolean) 值执行操作

07-27 14:04