Android 插入、编辑、删除notifyDataSetChanged()时的ListView更新无效

Android 插入、编辑、删除notifyDataSetChanged()时的ListView更新无效,android,Android,我有一个绑定到SimpleCursorAdapter的ListView,我希望它在修改数据库时刷新(通过插入、更新或删除行)。cursor.notifyDataSetChanged()无效(在UI线程上调用),ListView.removeViewAt(int)抛出不支持的操作异常。 我应该在Android上做些什么来获得这样的基本行为 请注意,数据库受到了正确的影响,并且在我重新启动活动时显示了修改。但是在这里,重新启动活动不是一个选项,更改ListView适配器是这里的最后一个资源,因为这是

我有一个绑定到SimpleCursorAdapter的ListView,我希望它在修改数据库时刷新(通过插入、更新或删除行)。cursor.notifyDataSetChanged()无效(在UI线程上调用),ListView.removeViewAt(int)抛出不支持的操作异常。 我应该在Android上做些什么来获得这样的基本行为

请注意,数据库受到了正确的影响,并且在我重新启动活动时显示了修改。但是在这里,重新启动活动不是一个选项,更改ListView适配器是这里的最后一个资源,因为这是一个黑客行为,不能保证平稳过渡

免责声明 这是一个非常基本的问题,问了数百万次,回答为零。
请,不要回答如果您在代码中从未这样做过,请不要问我的问题,也不要麻烦尝试这个或那个仅当您知道如何从API>=11中执行时才回答此问题。执行此操作的方法是使用
游标加载程序,该程序也包含在Android兼容性库中,因此如果您针对的是以前的Android版本,也可以使用此程序
CursorLoader
将在后台线程中进行查询并返回光标您需要实现一个
内容提供者
。你可以阅读这本书来了解如何使用它。基本上,您初始化一个加载程序,然后在知道数据已更改时重新启动它。在回调中,您只需交换适配器的光标

或者您可以在
光标上使用
requery()
。适配器将自动收到更改通知。这种方法现在已被弃用,当然,这不是推荐的方法