Наконец я выяснил, не почему, а какой элемент уничтожает обновление счетчика.
Я использовал два разных URI одного и того же ContentProvider для обновления всех элементов и показа только активных элементов
- CONTENT_URI_ITEMS
- CONTENT_URI_ACTIVE_ITEMS
Если я использую один и тот же URI для обновления и отображения (с необходимым активным фильтром), список счетчиков будет обновлен. Если я использую разные URI, то счетчик показывает old data.
Я не понимаю этого поведения (курсор возвращает правильное количество элементов, но счетчик не заботится), но у меня есть обходной путь, который работает.
Данные магазина:
getActivity().getContentResolver().update(
RecordsContentProvider.CONTENT_URI_ITEMS,
_Changes,
COLUMN_ID + " =?",
new String[] { String.valueOf(_ID) });
До (получить данные) - не работает :
CursorLoader curLoader = new CursorLoader(this.getActivity(),
RecordsContentProvider.CONTENT_URI_ACTIVE_ITEMS,
_ITEMS_PROJECTION,
null, null, null);
После (получить данные) - работа :
CursorLoader curLoader = new CursorLoader(this.getActivity(),
RecordsContentProvider.CONTENT_URI_ITEMS,
_ITEMS_PROJECTION,
COLUMN_IS_ACTIVE + " =1", null, null);
notifyDataSetChanged
не требуется, если базовый ContentProvider
делает это для вас так: (getContext().getContentResolver().notifyChange(uri, null);
)