Intereting Posts
Вставить текст с каплями в андроид Не выходите из строя градиента, если тест терпит неудачу с помощью плагина gradle-android-test-plugin Ошибка: в папке с инструментами NDK для ABI с префиксом нет инструментальных цепочек: llvm Как вручную включить внешний пакет aar с использованием новой системы сборки Gradle Android Значок уведомлений Android 5.1 пуст Доступ к контексту приложения из TestSuite в Setup () перед вызовом getActivity () Являются ли Android BroadcastReceivers запущенными в новом потоке? Как я могу заменить календарь по умолчанию для Android OS? Как закрыть приложение для Android с помощью UiAutomator? Android-приложение не показывает Android, как получить разницу во времени между двумя часовыми поясами в Android? Когда вызывается onSizeChanged ()? Как настроить эмулятор Android 4.0+ для работы в качестве планшета? Могут ли Wi-Fi и 3G работать одновременно на Android? Как отправить представление назад? Как управлять программным обеспечением z-заказа?

Как заставить TextWatcher ждать некоторое время, прежде чем делать какие-либо действия

У меня есть EditText чтобы фильтровать элементы в ListView под ним, которые могут содержать более 1000 элементов. TextWatcher :

 txt_itemSearch.addTextChangedListener(new TextWatcher() { public void onTextChanged(CharSequence s, int start, int before, int count) { fillItemList(); } public void afterTextChanged(Editable s) { } public void beforeTextChanged(CharSequence s, int start, int count, int after) { } }); 

Проблема здесь в том, что с каждой буквы, введенной пользователем, список становится обновленным, и это повторное обновление списка, которое заставляет пользовательский интерфейс работать медленно.

Как заставить TextWatcher ждать 1-2 секунды, и если через 2 секунды не произойдет больше ввода, отфильтруйте список. Любые предложения ребята?

Solutions Collecting From Web of "Как заставить TextWatcher ждать некоторое время, прежде чем делать какие-либо действия"

Как заставить TextWatcher ждать 1-2 секунды, и если после 2 секунд не будет больше ввода, отфильтруйте список.

Как я уже сказал в комментарии, вы должны изучить использование метода getFilter() адаптера. Поскольку это может оказаться неприемлемым (как вы говорите), попробуйте реализовать тот же механизм, который использует фильтр адаптера для отмены между входами фильтра.

 private Handler mHandler = new Handler(); public void afterTextChanged(Editable s) { mHandler.removeCallbacks(mFilterTask); mHandler.postDelayed(mFilterTask, 2000); } 

Где filterTask :

 Runnable mFilterTask = new Runnable() { @Override public void run() { fillItemList(); } }