Как отключить автоматическое открытие раскрывающегося списка в AutoCompleteTextView при вызове notifyDataSetChanged ()? - PullRequest
4 голосов
/ 12 марта 2012

Вот моя проблема:

В моем приложении для Android я использую AutoCompleteTextView и обновляю список элементов каждые 5 секунд.Обновление работает, когда я вызываю notifyDataSetChanged ().Но когда я набираю здесь что-то, и он выдаст мне список подходящих элементов, а затем я закрою его вручную, когда другой поток обновляет список и вызывает notifyDataSetChanged (), раскрывающийся список отображается автоматически (даже если я закрывал его раньше).И это действительно раздражает, потому что, если список длинный, он занимает весь экран, а после закрытия он появится еще через 5 секунд.Я попытался dismissDropDown () сразу после вызова notifyDataSetChanged (), но это не имеет никакого эффекта.Похоже, выпадающий показывает с небольшой задержкой.Это также не очень хороший способ исправить это, потому что если пользователь не закрыл список, он закроется после обновления.Также пытался убрать фокус - все равно безрезультатно.

Поэтому мне нужен метод: обновить мой список элементов (через notifyDataSetChanged ()) без автоматического отображения раскрывающегося списка, но если раскрывающийся список уже отображался, не закрывайтеэто.

Надеюсь, вы можете помочь,

ура


Я сделал это, наконец.Я выкладываю здесь решение, может быть, кто-то будет использовать это.

Чтобы проверить, виден ли выпадающий список:

final boolean isVisible = autocomplete.isPopupShowing();

Далее, вызовите notifyDataSetChanged (),

Наконец:

new Handler().post(new Runnable(){

@Override
public void run() {
    if(!isVisible){
        autocomplete.dismissDropDown();
    }
}

});

Это прекрасно работает.

1 Ответ

0 голосов
/ 18 июля 2014

У меня также есть эта проблема, я думаю, что это ошибка, я решил ее следующим образом

Прежде всего установите для свойства фокуса AutoCompleteTextView значение false.

Во-вторых, измените свойство фокусировки AutoCompleteTextView на true в событии onTouch этого представления. Для этого вам нужно реализовать onTouchListener для AutoCompleteTextview.

Всякий раз, когда вы касаетесь этого AutoCompleteTextView, вы должны изменить фокусируемое свойство на true, в противном случае оставьте его сфокусированным на false. Так что выпадающий список никогда не появляется, когда представление находится в не сфокусированном состоянии.

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

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