Как я могу проверить несколько полей editText и включить кнопку? - PullRequest
0 голосов
/ 26 мая 2019

Я пытаюсь выяснить, как проверить 6 полей ввода EditText и включить кнопку button_step_one_next_FSF.isEnabled = true , когда все соответствует моему состоянию. Я хочу проверить все, используя этот класс утилит, не создавая объект TextWatcher.

Вот мой класс утилит editText

inline fun EditText.onTextChange(crossinline f: (s: CharSequence?) -> Unit) {
val listener = object : TextWatcher {
    override fun onTextChanged(s: CharSequence, start: Int,
                               before: Int, count: Int) {
        f(s)
    }

    override fun afterTextChanged(s: Editable?) {}
    override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {}
}
addTextChangedListener(listener)

}

Воткраткий пример метода проверки

 private fun validateInput() {

    edit_text_name.onTextChange { s ->
        val name: String = s?.toString() ?: ""
        if (!name.isNameNotValid()) {
            text_input_name.isEndIconVisible = true
            text_input_name.isErrorEnabled = false
        } else {
            text_input_name.error = getString(R.string.error_not_valid_name)
            text_input_name.isEndIconVisible = false
        }
    }
    edit_text_surname.onTextChange { s ->
        val surname: String = s?.toString() ?: ""
        if (!surname.isNameNotValid()) {

            text_input_surname.isEndIconVisible = true
            text_input_surname.isErrorEnabled = false

        } else {
            text_input_surname.error = getString(R.string.error_not_valid_surname)
            text_input_surname.isEndIconVisible = false
        }
    }

1 Ответ

0 голосов
/ 02 июня 2019

Я только что добавил этот метод checkButtonEnableState () в конце каждой проверки в лямбда-выражении TextWatcher, и это решило мою проблему!

private fun checkButtonEnableState() {
    button_step_one_next_FSF.isEnabled =
        (!edit_text_name.text.toString().isNameNotValid()
                && !edit_text_surname.text.toString().isNameNotValid()
                && edit_text_password_FSF.text.toString().isValidPassword()
                && edit_text_password_confirm_FSF.text.toString().isValidPassword()) &&
                (edit_text_password_confirm_FSF.text.toString() == edit_text_password_FSF.text.toString())
} 
...