Intereting Posts
Как реализовать виджет колес, как в iPhone? Не удалось создать внешнюю библиотеку OpenSSL для Android NDK для Windows / Cygwin Как реализовать WebSocket с помощью Retrofit + RX Удаление панели состояния Android в графическом макете Eclipse Недействительный 1 пользовательский вид вызывает все пользовательские представления в группе просмотра, которая будет признана недействительной? Как обрабатывать ошибку в Retrofit 2.0 Создание android – как загрузить изображение ядра в команде mkbootimg? Установите приложение в качестве музыкального плеера по умолчанию в программном обеспечении Android ANR (Force close / Wait) при создании достаточно большого списка Android java.lang.IllegalArgumentException в HttpGet GetSupportActionBar возвращает значение null Первый элемент TansitionDrawable не исчезает Как ограничить ближайший поиск местоположения в соответствии с текущим местоположением, используя карты google в android? Историческое распространение версий платформы Android FindViewByID возвращает null для CustomView

Фильтрация ListView с помощью CursorLoader и Custom CursorAdapter

В настоящее время я делаю проект, который включает показ списка местоположений рядом с моим текущим местоположением.

Я только недавно начал Android-программирование, поэтому я все еще участвую в процессе обучения на этапе кодирования.

Я искал все, пытаясь понять, как действовать. Я все еще застрял после прочтения и опробования.

В настоящее время мой рабочий код состоит из

  • CursorLoader
  • Пользовательский ResourceCursorAdapter, который помогает заполнять мои записи в ListView

Вопросов

  1. Что такое «правильный» способ фильтрации записей для моего ListView? Я видел сообщения в интерфейсе Filter / Filterable, но, похоже, он не работает для моей текущей настройки? Выполнять фильтрацию внутри своего пользовательского адаптера CursorAdapter?

  2. Как мне обновить ListView после выполнения фильтрации? Я вызываю getLoaderManager (). RestartLoader (0, null, this) или adapter.notifyDataSetChanged ()?

Заранее спасибо.

Используйте getLoaderManager().restartLoader(LOADER_ID, null, MainActivity.this); Для вызова onCreateLoader .

Пример сайта разработчика Android .

 private String filter; public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.action_filter : filter = "COLUMN_NAME = value"; getLoaderManager().restartLoader(LOADER_ID, null, MainActivity.this); break; default: break; } return super.onOptionsItemSelected(item); } @Override public android.content.Loader<Cursor> onCreateLoader(int id, Bundle args) { return new CursorLoader( MainActivity.this, // Parent activity context SomeContentProvider.CONTENT_URI, // Table to query projection, // Projection to return filter, // No selection clause null, // No selection arguments null // Default sort order ); }