私は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. フォームコンポーネントを使用したフォーム検証
- 4. anglejsを使用したフォーム検証
- 5. isNaN()を使用したフォーム検証
- 6. ノックアウトを使用したフォーム検証
- 7. Spring 3を使用した検証フォーム
- 8. 検証サービスを使用した検証
- 9. IDataErrorInfoを使用したソース更新前のWPFフォームの検証
- 10. 動的に生成されたフォームを使用したjQueryフォームの検証
- 11. javascriptを使用したxslフォームの検証
- 12. STI(単一テーブル継承)を使用したSymfony2フォームの検証
- 13. phpとjavascriptを使用したフォームの検証
- 14. Telerik(ASP.NET MVC)を使用したjQueryフォームの検証
- 15. グループを使用したjqueryフォームの検証
- 16. asp.net C#Webフォームを使用した複数ファイルアップロードの検証
- 17. .bind( 'submit')を使用したjQueryフォームの検証
- 18. symfony 3でFosRestBundleを使用したフォーム検証の問題
- 19. データ注釈とJavaScriptを使用したモデル/フォームの検証
- 20. JSONスキーマを使用したAngularJSフォームの検証
- 21. DjangoでのDajaxを使用したフォーム検証
- 22. ビューでCodeIgniterフォームの検証を使用
- 23. ブートストラップの意図したフォーム検証スタイルの使用
- 24. PHPでMVS構造体を使用したフォーム検証
- 25. Meteor/React/SimpleSchemaを使用したフォーム検証
- 26. Vue 2を使用したクライアント側フォーム検証
- 27. ColdFusionでjavascriptを使用したフォーム検証
- 28. Javascript/PHPを使用したHTMLフォーム検証
- 29. 番号と文字でJqueryを使用したフォーム検証
- 30. fubumvc - IFailureValidationPolicyを使用した単純フォーム検証
一般的なアプローチは何ですか?編集テキストの変更に反応して反応したいのですか、または検証結果に反応するビューを使用しますか? –