Кнопка включения, когда оба поля EditText имеют хотя бы один ввод символов (Android) - PullRequest
0 голосов
/ 18 мая 2018

Созданный мною класс включает кнопку для ввода в любое поле.Как я могу изменить ее так, чтобы кнопка была включена только тогда, когда пользователь вводил что-то в оба поля EditText.

    class BtnEnabler(){
        constructor(type:EditText, btn:Button):this(){
            btn.isEnabled = false
            type.addTextChangedListener(object : TextWatcher {
                override fun afterTextChanged(p0: Editable?) {
                }
                override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
                }
                override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
                }
            })
            fun EditText.afterTextChanged(afterTextChanged: (String) -> Unit) {
                this.addTextChangedListener(object : TextWatcher {
                    override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
                    }
                    override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
                    }
                    override fun afterTextChanged(editable: Editable?) {
                        afterTextChanged.invoke(editable.toString())
                    }
                })
            }
            type.afterTextChanged {btn.isEnabled = true}
        }
    }
    BtnEnabler(byear, sub_btn)
    BtnEnabler(bday, sub_btn)

Кроме того, можно ли снова отключить кнопку, когда пользователь удаляет весь введенный текст?

1 Ответ

0 голосов
/ 18 мая 2018
 EditText editText1;
    EditText editText2;
    Button button;

    private void init() {
        // TODO: 5/18/2018 consider findViewById first 
        editText1.addTextChangedListener(textWatcher);
        editText2.addTextChangedListener(textWatcher);
    }

    private String getText(TextView textView) {
        return textView.getText().toString().trim();
    }

    TextWatcher textWatcher = new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {

        }

        @Override
        public void afterTextChanged(Editable s) {
            button.setEnabled(getText(editText1).length() > 0 && getText(editText2).length() > 0);
        }
    };

Надеюсь, вы сможете преобразовать его в котлин.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...