Android: ListView с EditTexts портит фокус и IME

У меня есть ListActivity с пользовательскими элементами, где каждый элемент имеет свой собственный TextEdit. Нажатие на любую из них поднимает IME-клавиатуру и вызывает изменение размера ListView. Так что EditText, который недавно получил фокус нажатием, теряет его. Второе нажатие требуется, чтобы поставить его сфокусированным или уверенным. Это происходит только тогда, когда у меня есть ход, чем 1 пунктов в списке.

Есть ли способ открыть IME и сохранить фокус на EditText одним нажатием?

2 ответа

Вы хотите изменить размер списка? Можете ли вы переопределить ListView.onSizeChanged и использовать его вместо "всплывающего" имени для super.onSizeChanged (при условии, что ваше предположение об источнике ошибок верное)?

Я решил это, сохранив отредактированный текст EditText в переменной и попросив сосредоточиться на нем после задержки. Это взлом, но иногда Android требует взлома.

Handler handler = new Handler();
handler.postDelayed(new Runnable() {
    public void run() {
        EditText editText = getListAdapter().tappedEditText;
        if (editText != null) {
            editText.requestFocus();
        }
    }
}, 100);
Другие вопросы по тегам