使用RxAndroid进行动态表单验证

时间:2016-10-13 08:35:37

标签: forms validation rx-android

我正在开发Android应用程序。我想使用RxAndroid进行表单验证。我在互联网上做了很多研究,但没有找到指导我。请帮我解决一下我可以用同样的方法,可能还有一个小例子。谢谢。

1 个答案:

答案 0 :(得分:1)

我发现这个教程看起来很棒:enter image description here

首先,将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));

RxBinding

可选enter image description here