私はRxJava、RxAndroidをかなり使い慣れています。私は2つのeditText
パスワード用とパスワード確認用の2つがあります。基本的には、2つの文字列が一致するかどうかを確認する必要があります。これはObservables
を使用して可能ですか?私はそれをつかむことができるので、例を本当に感謝します。乾杯。リアクティブプログラミングを使用したAndroidフォームの検証
1
A
答えて
0
まず、あなたのEditText
のうち、Observable
を作成します。 RxBinding
ライブラリを利用したり、ラッパーを自分で作成することができます。
Observable<CharSequence> passwordObservable =
RxTextView.textChanges(passwordEditText);
Observable<CharSequence> confirmPasswordObservable =
RxTextView.textChanges(confirmPasswordEditText);
その後、あなたのストリームをマージし、combineLatest
演算子を使用して値を検証:
Observable.combineLatest(passwordObservable, confirmPasswordObservable,
new BiFunction<CharSequence, CharSequence, Boolean>() {
@Override
public Boolean apply(CharSequence c1, CharSequence c2) throws Exception {
String password = c1.toString;
String confirmPassword = c2.toString;
// isEmpty checks needed because RxBindings textChanges Observable
// emits initial value on subscribe
return !password.iEmpty() && !confirmPassword.isEmpty()
&& password.equals(confirmPassword);
}
})
.subscribe(new Consumer<Boolean>() {
@Override
public void accept(Boolean fieldsMatch) throws Exception {
// here is your validation boolean!
// for example you can show/hide confirm button
if(fieldsMatch) showConfirmButton();
else hideCOnfirmButton();
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
// always declare this error handling callback,
// otherwise in case of onError emission your app will crash
// with OnErrorNotImplementedException
throwable.printStackTrace();
}
});
subscribe
方法はDisposable
オブジェクトを返します。メモリリークを避けるため、Activity
のonDestroy
コールバック(Fragment
の場合はOnDestroyView
)にdisposable.dispose()
と電話する必要があります。
P.S.サンプルコードで使用するRxJava2
0
thisライブラリを使用すると、このようなことができます。
Observable
.combineLatest(RxTextView.textChanges(passwordView1),
RxTextView.textChanges(passwordView2),
(password1, password2) -> checkPasswords))
.filter(aBoolean -> aBoolean)
.subscribe(aBoolean -> Log.d(passwords match))
関連する問題
- 1. JavaScriptを使用したフォームの検証
- 2. jqueryフォームの検証を使用したパスワードの検証jquery.form-validator.js
- 3. anglejsを使用したフォーム検証
- 4. ノックアウトを使用したフォーム検証
- 5. PHPを使用したjavascriptフォーム検証
- 6. Spring 3を使用した検証フォーム
- 7. フォームコンポーネントを使用したフォーム検証
- 8. isNaN()を使用したフォーム検証
- 9. 検証サービスを使用した検証
- 10. IDataErrorInfoを使用したソース更新前のWPFフォームの検証
- 11. 動的に生成されたフォームを使用したjQueryフォームの検証
- 12. フォームの検証を使用する
- 13. ビューでCodeIgniterフォームの検証を使用
- 14. Telerik(ASP.NET MVC)を使用したjQueryフォームの検証
- 15. グループを使用したjqueryフォームの検証
- 16. .bind( 'submit')を使用したjQueryフォームの検証
- 17. GUMPを使用したPHPフォームの検証
- 18. asp.net C#Webフォームを使用した複数ファイルアップロードの検証
- 19. 純粋なCSSを使用したフォーム入力の検証
- 20. JavaScript関数を使用したフォームの検証
- 21. データ注釈とJavaScriptを使用したモデル/フォームの検証
- 22. javascriptを使用したxslフォームの検証
- 23. DjangoでのDajaxを使用したフォーム検証
- 24. javascriptを使用したフォーム検証の正規表現
- 25. ディスパッチャを使用したReduxフォームの非同期検証
- 26. JSONスキーマを使用したAngularJSフォームの検証
- 27. phpとjavascriptを使用したフォームの検証
- 28. STI(単一テーブル継承)を使用したSymfony2フォームの検証
- 29. symfony 3でFosRestBundleを使用したフォーム検証の問題
- 30. phpを使用したAjaxフォームの検証WITHOUT jQuery
一般的なアプローチは何ですか?編集テキストの変更に反応して反応したいのですか、または検証結果に反応するビューを使用しますか? –