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

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

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

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

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

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

Вопросов

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

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

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

Solutions Collecting From Web of "Фильтрация ListView с помощью CursorLoader и Custom CursorAdapter"

Используйте 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 ); }