Android ListView Обновление в реальном времени

У меня есть 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? Или есть лучший способ, который не видит эти две вещи связанными таким образом.

8
задан stevex 9 March 2012 в 14:20
поделиться