package org.wikipedia.views; import android.text.Editable; import android.text.TextWatcher; import android.widget.EditText; /** * Triggers events when one or more EditTexts are empty or not */ public class NonEmptyValidator { private final EditText[] editTexts; private final ValidationChangedCallback validationChanged; public interface ValidationChangedCallback { void onValidationChanged(boolean isValid); } public NonEmptyValidator(ValidationChangedCallback validationChanged, EditText... editTexts) { this.editTexts = editTexts; this.validationChanged = validationChanged; TextWatcher triggerWatcher = new TextWatcher() { @Override public void beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) { } @Override public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) { } @Override public void afterTextChanged(Editable editable) { revalidate(); } }; for (EditText editText : editTexts) { editText.addTextChangedListener(triggerWatcher); } } private boolean lastIsValidValue = false; private void revalidate() { boolean isValid = true; for (EditText editText : editTexts) { isValid = isValid && editText.getText().length() != 0; } if (isValid != lastIsValidValue) { lastIsValidValue = isValid; validationChanged.onValidationChanged(isValid); } } }