2016-10-13 5 views
2

私はAndroidアプリケーションを開発しています。フォームの検証にRxAndroidを使用したいと思います。私はインターネット上で多くの研究を行ってきましたが、私を連れて行くガイドが見つかりませんでした。おそらく小さな例で私が同じことをやっていく方法で私を助けてください。ありがとうございました。RxAndroidによる動的フォーム検証

答えて

1

私は、このチュートリアルを見つけた偉大なりますReactive Forms with RxAndroid

まず、プロジェクトに

RxBindingを追加RxBindingが)(これを行うための方法で構築された、 RxTextView.textChangesを持っています。それはEditTextを受け取り、 を返します。各文字の変更にCharSequenceを出すことができます。

mInputLayout.setError("Invalid Credit Card Number") 
    Observable<Boolean> creditCardObservable = RxTextView.textChanges(mCreditCardInput) 
      .map(inputText -> (inputText.length() == 0) || inputText.toString().matches("credit card regex here")) 
      .distinctUntilChanged(); 
    creditCardObservable.subscribe(isValid -> mInputLayout.setErrorEnabled(!isValid)); 

のように、より多くの値を使用してプロセスを繰り返します。

mCreditCardInputLayout.setError("Invalid Email); 
Observable<Boolean> emailObservable = RxTextView.textChanges(mEmailInput) 
     .map(inputText -> (inputText.length() == 0) || inputText.toString().matches("credit card regex here")) 
     .distinctUntilChanged(); 

emailObservable.subscribe(isValid -> mCreditCardInputLayout.setErrorEnabled(isValid)) 

と値が有効であるときに、私たちは、ボタンを有効にすることができます。

Observable.combineLatest(
       creditCardObservable, 
       emailObservable, 
       (creditValid, emailValid) -> creditValid && emailValid) 
       .distinctUntilChanged() 
       .subscribe(valid -> mSubmit.setEnabled(valid)); 

enter image description here

オプションretrolambda library

+1

私はいくつかのコードを追加するつもりです –

+1

非常に良い、ありがとう。 (私のdownvote btw、私はこのポストに投票するドメイン知識が不足しています。) –

+0

ありがとう提案の –

関連する問題