Observable.combinelatest Type Inference In Kotlin
I'm using RxJava2, Kotlin-1.1 along with RxBindings in my project. I have simple login screen with 'login' button disabled by default, I want to enable the button only when usernam
Solution 1:
Your issue is that the compiler can't figure out which override of combineLatest
to call, because multiple ones have functional interfaces as their third parameter. You can make the conversion explicit with a SAM constructor like this:
val isSignInEnabled: Observable<Boolean> = Observable.combineLatest(
userNameObservable,
passwordObservable,
BiFunction { u, p -> u.isNotEmpty() && p.isNotEmpty() })
Ps. Thanks for asking this question, it helped me figure out that I was initially wrong about this one that turns out to be the same problem, which I've now updated with this solution as well. https://stackoverflow.com/a/42636503/4465208
Solution 2:
You can use RxKotlin which gives you helper methods for SAM ambiguity issue.
val isSignInEnabled: Observable<Boolean> = Observables.combineLatest(
userNameObservable,
passwordObservable)
{ u, p -> u.isNotEmpty() && p.isNotEmpty() })
As you can see, in RxKotlin use Observables
instead of Observable
Post a Comment for "Observable.combinelatest Type Inference In Kotlin"