I use the android-saripaar library.
I can check all the EditText
fields on the correctness of the entered data using validate()
. If I fill the EditText
on with a mistake in correct data, the error doesn't disappear as long as I again call a validate()
.
How can I check the validity after entering text only in a certain EditText
and to remove a mistake from it?
Thanks.
You can use Saripaar's Mode.IMMEDIATE
in combination with TextWatcher
instances to accomplish what you are looking for.
@Order
annotation one every view fields that have Saripaar annotations. This is required to use immediate validation mode. If you want to validate rules in a specific order, each saripaar annotation has a sequence
attribute. The sequence
attribute is optional, but very helpful if you want the rules to be validated in a specific sequence.@Order(1) @NotEmpty(sequence = 1) @Email(seqence = 2) private EditText mEmailEditText; @Order(2) @Password private EditText mPasswordEditText;
Set the mode to immediate mValidator.setMode(Mode.IMMEDIATE)
Add TextWatcher
s / appropriate listeners to your widgets.
TextWatcher validationTextWatcher = new TextWatcher() { @Override void afterTextChanged(Editable s) { mValidator.validate(); } // Other methods to override ... } mEmailEditText.addTextChangedListener(validationTextWatcher); mPasswordEditText.addTextChangedListener(validationTextWatcher);
ViewValidatedAction
implementation that will automatically clear errors on EditText
fields when it is valid. If your form uses alternate error display mechanism / widgets, you can clear them by specifying your own ViewValidatedAction
instance.mValidator.setViewValidatedAction(new ViewValidatedAction() { @Override void onAllRulesPassed(View view) { // ... clear errors based on the view type } });
Disclosure: I'm the author of Saripaar
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With