Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android ContentProvider中连接表和通知ContentObservators的最佳实践_Android_Sqlite_Android Contentprovider - Fatal编程技术网

Android ContentProvider中连接表和通知ContentObservators的最佳实践

Android ContentProvider中连接表和通知ContentObservators的最佳实践,android,sqlite,android-contentprovider,Android,Sqlite,Android Contentprovider,我有一个ContentProvider,它处理与我的应用程序相关的所有数据插入和检索,我遵循Virgil Dobjanschi在Google I/O上建议的模式。我使用的是第一种模式 我的问题是,我有一个逻辑实体,它由数据库中的多个表表示 例如,我有一个Articles表和一个ArticleExtras表。Articles表示文章本身,而ArticleExtras表示关于某些文章的附加信息,如评论的数量 我在UI中使用CursorAdapter在ListView的一行中显示文章标题和该文章的评论

我有一个ContentProvider,它处理与我的应用程序相关的所有数据插入和检索,我遵循Virgil Dobjanschi在Google I/O上建议的模式。我使用的是第一种模式

我的问题是,我有一个逻辑实体,它由数据库中的多个表表示

例如,我有一个Articles表和一个ArticleExtras表。Articles表示文章本身,而ArticleExtras表示关于某些文章的附加信息,如评论的数量

我在UI中使用CursorAdapter在ListView的一行中显示文章标题和该文章的评论数

为了实现这一点,我在文章表的ContentProvider查询方法中添加了一个
left outer join ArticleExtras on
语句,以便CursorAdapter能够在文章本身的同时获得ArticleExtras

当从web上获取新文章时,我通过ContentProvider将其插入数据库,然后CursorAdapter收到通知并更新UI,这部分工作正常

但是当我获取评论(ArticleExtras)的数量时,我想要相同的游标适配器,它正在监视
content://com.myapp.content/Articles
,以便我可以更新ListView中的行

我当前的实现是这样的:在将ArticleExtras插入数据库后,我启动一个新的查询,检查Articles表中是否有与我刚才插入的ArticleExtras相关的行。如果是这样,我将为该文章创建一个新的uri(例如:
content://com.myapp.cotent/Articles/123
),并调用
getContext().getContentResolver().notifyChange(uri,null)
,以便监视本文更改的相应游标适配器将收到通知

该方法正确吗,或者有没有更好的方法来实现我想要的内容?

签出,在该方法中,他们将通知uri设置为
权限uri
,这似乎是提供程序中其他uri的总括。我也遇到过同样的问题,我自己也尝试过为一个具有多个表和这些表上的连接的提供者提供这种服务,而且效果很好