如何在 Observables.combineLatest 中收听三个以上的字段
How to Listen to more than Three Fields in Observables.combineLatest
我有代码可以使用 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 个 observable,你需要添加一个 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()
}
})
在组合函数中,您可以验证数据和 return 布尔值。
然后在订阅中你可以根据那个布尔值
采取行动
我有代码可以使用 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 个 observable,你需要添加一个 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()
}
})
在组合函数中,您可以验证数据和 return 布尔值。 然后在订阅中你可以根据那个布尔值
采取行动