У меня есть ListView в ListActivity, который привязан к некоторым данным. У меня есть поставщик контента, который предоставляет данные.
Активность ListActivity получает данные, запрашивая распознаватель содержимого:
Uri uri = Uri.parse("content://my.provider.DocumentProvider/mystuff");
contentCursor = this.getContentResolver().query(uri, null, null, null, null);
Итак, теперь активность имеет курсор. Он создает адаптер и прикрепляет его к списку:
ListAdapter adapter = new DocumentListCursorAdapter(this, R.layout.main_row_layout, contentCursor, new String[] { "titleColumn" }, new int[] { titleColumnIndex });
setListAdapter(adapter);
Это работает нормально; список показывает данные в курсоре.
Но теперь у поставщика контента есть новые данные. Я хочу, чтобы список обновлялся, чтобы отображать новые данные.
Примеры, которые я видел, включают вызов адаптера notifyDataSetChanged, но мне кажется, что это нарушает разделение между поставщиком контента и списком, который потребляет контент.
Нужно ли контент-провайдеру знать, какие адаптеры подключены к курсору, чтобы он мог вызвать их метод notifyDataSetChanged? Или есть лучший способ, который не видит эти две вещи связанными таким образом.