我正在开发Android应用程序。我想使用RxAndroid进行表单验证。我在互联网上做了很多研究,但没有找到指导我。请帮我解决一下我可以用同样的方法,可能还有一个小例子。谢谢。
答案 0 :(得分:1)
首先,将Reactive Forms with RxAndroid 添加到您的项目中
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));