Первый элемент в списке не получает фокус

1

У меня есть edittext и listview в линейном макете. Предположим, что в списке всего 5 результатов, которые в настоящее время отображаются в списке. 10. Когда я просматриваю текст редактирования в списке, 5-й элемент в списке (5) Я полагаю, что он всегда был последним) получает фокус, а не первый элемент! Как мне это решить?

Теги:
focus
listview

1 ответ

0
Лучший ответ

1) Создайте обработчик как поле в своей деятельности. Вот так:

private Handler myHandler = new Handler();

2) Когда вы создаете ListView, добавьте OnFocusChangeListener, как показано ниже.

    myList.setOnFocusChangeListener(new View.OnFocusChangeListener() {
        public void onFocusChange(View v, boolean hasFocus) {
            if (hasFocus) {
                myHandler.postAtFrontOfQueue(new Runnable() {
                    public void run() {
                        myList.setSelection(0);
                    }
                });
            }
        }
    });
  • 0
    Хотя это работает, но это дорогостоящий звонок, я полагаю. вот что в документации также сказано: «Этот метод предназначен только для использования в особых условиях - он может легко истощить очередь сообщений, вызвать проблемы с упорядочением или иметь другие неожиданные побочные эффекты». Мне интересно, зачем мне нужен обработчик для это?
  • 0
    Если вы делитесь своим обработчиком с другими процедурами, которые не решают проблему с фокусировкой ListView, вам действительно нужно беспокоиться об использовании этого метода. Поэтому я предлагаю вам использовать Обработчик, созданный только для этой цели. Делая так, у вас не будет проблем с очередью.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню