Кажется, вы думаете, что-то не так, как я.
Как вы знаете, ListAdapter не уведомил DataSetChanged.
Кажется, что курсор лучше всего подходит для ListView. Док. говорит, что «часто эти данные поступают из курсора, но это не обязательно. ListView может отображать любые данные при условии, что они помещены в ListAdapter».
Если вы проверите обе ссылки registerDataSetObserver ([ DataSetObserver ] 2 наблюдатель) , вы можете кое-что заметить. ListAdapter хорошо работает с курсором. Так почему бы вам не попробовать использовать другие адаптеры.
Я думаю, что лучший способ обновить адаптер - использовать или расширить BaseAdapter (с ListView). И используйте notifyDataSetChanged после изменения набора данных. В моем случае это работает хорошо и мягко (лишает законной силы просмотр списка и элементов, и позиция прокрутки только там! Не собирается в первую позицию).