3

我正在尝试找到一种在删除某些行时通知依赖组件的方法,那么我可以发出选择查询,获取游标,然后发出删除还是会修改原始游标?有更好的方法吗?这就是我所指的:

Cursor c = builder.query(db, projection, selection, selectionArgs, groupBy, having, sortOrder);
db.delete(table, selection, selectionArgs);
while (cursor != null && cursor.moveToNext()) {
    final String name = cursor.getString(0);
    // send notifications
}
c.close();
4

2 回答 2

2

游标是与数据库分离的数据结构。也就是说,以任何方式修改数据库都不会影响您已经获取的游标。

更新

这似乎是错误的!.. 对不起!

有关详细信息,请参阅评论。感谢@Selvin。

于 2012-12-05T12:27:12.050 回答
1

如果您使用内容提供者来访问您的数据库,那么您可以使用专门为此目的设计的ContentObservers :

当您通过内容提供者检索数据时,您可以使用 URI 来执行此操作,并且您可以使用此 URI 通知 ContentObserver 光标已更改:

getContentResolver ().notifyChange (URI, null)

有关更多信息,请参阅javadocsnotifyChange(...)

恐怕如果您不使用内容提供者来访问您的数据,您将不得不为此编写自己的解决方案。

于 2012-12-03T22:50:25.747 回答