Android: пользователь не может сфокусироваться на EditText после использования TextWatcher в BaseExpandableListAdapter - PullRequest
0 голосов
/ 04 июля 2019

У меня есть ExpandableListview, который является списком классов. Каждый класс - это расширяемая группа, которая содержит много строк учеников. Каждая строка ученика имеет поле EditText, где пользователь может изменить какое-либо значение (например, возраст).

Я хочу добиться того, чтобы после изменения пользователем значения EditText age я мог сделать что-то вроде сохранения в базе данных.

Итак, в getChildView методе моего класса адаптера я реализовал так:

        StudentTextWatcher oldWatcher =
                (StudentTextWatcher) holder.age.getTag();
        if (null != oldWatcher)
            holder.age.removeTextChangedListener(oldWatcher);

        StudentTextWatcher newWatcher =
                new StudentTextWatcher();
        holder.age.setTag(newWatcher);
        holder.age.addTextChangedListener(newWatcher);

, где age - это EditText.

Теперь, когда я пытаюсь щелкнуть по полю EditText для ввода чего-либо, клавиатура выскакивает, но я не вижу никакого фокуса в EditText. Я больше не могу печатать внутри. Я использую отладку, чтобы увидеть, что afterTextChanged действительно запущен, но я не понимаю, почему нет фокуса.

И еще одна странная вещь - после того, как я добавил TextWatcher для age, когда я щелкаю поле EditText из name, я не могу сфокусироваться ни на одном, но с ним не связано TextWatcher.

Заранее спасибо.

...