通知另一个表中的更改的一个表的游标

时间:2014-09-25 06:51:57

标签: android sqlite cursor android-contentprovider

假设我有CursorLoader监听用CONTENT_URI_1寻址的table1中的更改​​。 table1中的数据取决于使用CONTENT_URI_2寻址的table2的内容(对于那些对详细信息感兴趣的人,table1是对table2的sql视图)。

通过我的内容提供商中的setNotificationUri(),任何加载器都会收到有关表内容更改的通知。

现在,我从其他地方插入一行到table2,它发送CONTENT_URI_2更改的通知。但是没有通知CONTENT_URI_1,因为每个游标只能有一个通知uri。

问题是当CONTENT_URI_2发生变化时如何通知CONTENT_URI_1?

3 个答案:

答案 0 :(得分:0)

您可以在您的活动/片段中实施ContentObserver

onResume()注册,并在onPause注销。

getContentResolver().registerContentObserver(CONTENT_URI2, true, yourObserver);

关注此link。在onChange()致电ContentObserver时调用adapter.notifyDataSetChanged()回调,以刷新ListView

希望有所帮助

答案 1 :(得分:0)

我在发布问题后不久找到答案:)

如果您想在例如将数据插入CONTENT_URI_2(table2)之后通知CONTENT_URI_1(table1),您应该执行以下操作:

Uri resultUri = context.getContentResolver().insert(CONTENT_URI_2, table2rowDataContentValues);
// simply notify whatever URI you desire of changes
context.getContentResolver().notifyChange(CONTENT_URI_1, null);

非常简单,但最初并没有找到我。

答案 2 :(得分:0)

这是一个古老的问题,但仍然足以通过新的答案进行更新。

如果你有一个uri指向一个表,并且一个uri指向表的视图,那么我们可以通过使用正确的uirs命名来自动通知视图。

让我们将uri命名为表格,将querstion中的CONTENT_URI_2命名为

content://authority/table1

然后,如果我们将观看uri命名为

content://autority/table1/view1

然后,使用content://authority/table1对表格进行的任何更改都会自动通知content://authority/table1/view1

相关问题
最新问题