指向在内容提供者中加入查询而不更新列表的游标加载器

时间:2014-12-04 17:25:38

标签: android sql

我设置了多个光标加载器,指向我的内容提供商中的不同URI,它们可以正常工作。每个加载器都用于我的数据库中的特定表。

但是我现在已经在我的内容提供程序中创建了一个新的URI来对我的表执行连接查询。我创建了一个新的加载器,它指向用于执行连接查询的URI,但加载器不会更新UI。

如果我关闭应用程序然后打开它,则会显示新数据,但在一个活动中插入新数据然后返回到我的主要活动后,数据尚未更新。尽管数据库已插入新数据,但仍未调用加载程序。

我正在调用cursor.setNotificationUri(getContext()。getContentResolver(),uri);我的新加入URI。

为什么这不起作用有什么特别的原因吗?就像我说的那样,加载器可以很好地用于标准查询单个表,但带有连接查询的加载器却没有。

加载程序是否只能监听正在更新的单个表,以及为什么它不能监听加入?

编辑:

有关工作流程的更多信息......

活动1使用单独表的连接查询读取数据并显示到UI 活动2将数据插入到数据库的单独表中

活动1启动活动2,插入数据后完成

活动1有一个加载器来更新UI。从单个表中读取的加载器工作正常,但是在更新数据时不会调用从连接查询读取的加载器。它仅在创建活动时调用。

1 个答案:

答案 0 :(得分:1)

我知道这个问题是很久以前问过的,但是希望它可以帮助其他一些遇到相同问题的人...我遇到了完全相同的问题

在设置通知Uri之前,在内容提供程序类的Query方法中。确保“更新和删除Uri”与查询Uri相同。

uri = Uri.parse("content://com.casselsinthecloud.cloudbeats.provider/playlist_contents");

然后使用新的Uri调用setNotificationUri(...)。

cursor.setNotificationUri(getContext().getContentResolver(), uri);

这将确保CursorLoader动态更新。.