2016-11-24 11 views
1

RxJava2を使用してユーザー名とパスワードが十分に長いのにログインボタンを有効にしたいがエラーが発生する。JDK8でAndroid上でRxJava2を使用してログインボタンを有効にする

enter image description here

そしてa && bのエラーが

enter image description here

あり、他のエラーがあるが、私は考えている:あなたは、これは誤りであるmap(inputTextを参照してください両方のセクションのために

final Button loginButton = (Button) view.findViewById(R.id.loginbutton); 
final TextView usernameField = (TextView) view.findViewById(R.id.username_logindialog); 

Observable<Boolean> userNameValid = RxTextView.textChangeEvents(usernameField) 
     .map(e -> e.text()) 
     .map(inputText -> inputText.length() > 4); 

final TextView passwordField = (TextView) view.findViewById(R.id.password_logindialog); 
Observable<Boolean> passwordValid = RxTextView.textChangeEvents(passwordField) 
     .map(e -> e.text()) 
     .map(inputText -> inputText.length() > 7); 

Observable<Boolean> registerEnabled = 
     Observable.combineLatest(userNameValid, passwordValid, (a,b) -> a && b); 
registerEnabled.registerObserver(enabled -> loginButton.setEnabled(enabled)); 

最初の2つのエラーは根本的な原因ですが、私は私が何を参照していない今すぐObservable.combineLatestの代わりにuldを使用してください。

答えて

1

あなたはこの

emailChangeObservable = RxTextView.textChangeEvents(email); 
passwordChangeObservable = RxTextView.textChangeEvents(password); 

// force-disable the button 
submitButton.setEnabled(false); 

Observable.combineLatest(emailChangeObservable, passwordChangeObservable, 
             (emailObservable, passwordObservable) -> { 
    boolean emailCheck = emailObservable.text().length() >= 3; 
    boolean passwordCheck = passwordObservable.text().length() >= 3; 
    return emailCheck && passwordCheck; 
}).subscribe(aBoolean -> { 
    submitButton.setEnabled(aBoolean); 
}); 

// submit button will only be clickable if both forms have more than 3 characters each 

Check here for source

+0

ありがとう使用することができます。 rx.Observable.combineLatestを置くだけでコンパイルできます。 –