Intereting Posts
Использование GSON в Android для анализа сложного объекта JSON Документация для стилей в ресурсах android Установите прозрачный фон изображения на Android Кинжал. Должны ли мы создавать каждый компонент и модуль для каждого Activity / Fragment Скорость замедленного просмотра контроллера Viewpager в android Android 4.4 дает ошибку ERR_CACHE_MISS в onReceivedError для WebView назад Массив / Связанный список: производительность зависит от * направления * обхода? Использование библиотеки LGPL в приложении для платных Android Android получить ориентацию камеры Bitmap? И поверните назад -90 градусов Вызов функции startActivity () извне контекста активности Как просмотреть данные, хранящиеся в sqlite в студии android, используя genymotion в качестве эмулятора Как правильно использовать Google Plus для входа в систему с несколькими действиями? Распространение приложений для Android за пределами Android Market Настройка глобальных стилей для Views в Android Контакты Android Отображаемое имя и номер телефона (ы) в запросе одной базы данных?

Как текстовый фильтр Android ListView, поддерживаемый SimpleCursorAdapter?

У меня есть ListView, который поддерживается SimpleCursorAdapter.

Я хотел бы иметь возможность фильтровать список, как и список контактов, просто набрав текст, и я наткнулся на textFilterEnabled ()

Проблема в том, что я не мог понять, как заставить ее работать с SimpleCursorAdapter.

Возможно ли это?
Если да, то как это делается?

Solutions Collecting From Web of "Как текстовый фильтр Android ListView, поддерживаемый SimpleCursorAdapter?"

Метод setTextFilterEnabled() не выполняет автоматическую фильтрацию автоматически, так как он не знает, что в вашем Cursor должен быть отфильтрован текст.

Этот поток разработчиков Android имеет более подробную информацию.

На самом деле, на другой день был задан хороший вопрос, который на самом деле очень похож на ваш вопрос; Хотя вначале он спрашивал, как обрабатывать фильтрацию, когда на устройстве нет физической клавиатуры:

  • Как динамически обновлять ListView на Android

Для курсора SimpleCursorAdapter вам нужно всего лишь использовать setFilterQueryProvider для запуска другого запроса для вашего курсора на основе ограничения:

 m_Adapter.setFilterQueryProvider(new FilterQueryProvider() { public Cursor runQuery(CharSequence constraint) { Log.d(LOG_TAG, "runQuery constraint:"+constraint); //uri, projection, and sortOrder might be the same as previous //but you might want a new selection, based on your filter content (constraint) Cursor cur = managedQuery(uri, projection, selection, selectionArgs, sortOrder); return cur; //now your adapter will have the new filtered content } }); 

Когда добавляется ограничение (например, с помощью TextView), адаптер должен быть отфильтрован:

 public void onTextChanged(CharSequence s, int start, int before, int count) { Log.d(LOG_TAG, "Filter:"+s); if (m_slvAdapter!=null) { m_Adapter.getFilter().filter(s); } } 

Надеюсь это поможет. Я попытаюсь написать полную статью с исходным кодом в ближайшие несколько дней.

Я нашел эту статью полезной http://androidcookbook.oreilly.com/Recipe.seam;jsessionid=CE37400B3E545937B70BE2E9F94E78BB?recipeId=404

В основном, вы setTextFilterEnabled(true) в своем списке, и вы используете setStringConversionColumn() и setFilterQueryProvider() на вашем SimpleCursorAdapter .