android - 如何在 Observables.combineLatest 中监听三个以上的字段

标签 android kotlin kotlin-android-extensions rx-kotlin

我有代码可以使用 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 解决这个问题。

帮帮我..提前致谢..

最佳答案

如果你想合并 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 函数中,您可以验证您的数据并返回一个 bool 值。 然后在订阅中,您可以根据该 bool 值采取行动

关于android - 如何在 Observables.combineLatest 中监听三个以上的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48922214/

相关文章:

android - 使用 React-Navigation 在所有屏幕中显示组件 - React Native

java - 将目标 sdk 升级到 30 时初始化 youtube 播放器时出错

android - 无法使用我的私钥从API解码字符串

android - 这种类型有一个构造函数,必须在这里初始化 - Kotlin

android - @Parcelize 在多平台项目中

android - 放置自动完成 fragment 清除按钮设置可见性消失

Android Studio 1.0.1 添加外部库

java - 如何使覆盖层接收触摸事件而不消耗其他应用程序的触摸?

kotlin - 如何在 Kotlin 中有效地创建具有特定长度和相同值的字符串

android - kotlin中的lazy和lazyFast有什么区别?