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

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

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

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

我在用户界面中使用CursorAdapter来显示文章标题和一行ListView中的文章的评论数。

为了实现这一点,我在我的ContentProvider查询方法的Article表中添加了一个left outer join ArticleExtras on语句,以便CursorAdapter将ArticleExtras与Article本身一起获得。

当从Web获取新文章时,我通​​过ContentProvider将其插入到数据库中,然后CursorAdapter得到通知并更新UI,这部分按预期工作。

但是,当我提取的评论数量(ArticleExtras),我想要相同的CursorAdapter,它正在监视content://com.myapp.content/Articles变化content://com.myapp.content/Articles ,也被通知,所以我可以更新我的行ListView。

我目前的实现是这样的:插入ArticleExtras到数据库后,我开始一个新的查询,以检查是否有文章表有任何行与我刚刚插入的ArticleExtras有关。 如果是的话,我会为该文章创build一个新的URI(例如: content://com.myapp.cotent/Articles/123 ),并调用getContext().getContentResolver().notifyChange(uri, null)正在监视这篇文章的变化的相应的CursorAdapter将得到通知。

方法是否正确,还是有更好的方法来实现我想要的?

Solutions Collecting From Web of "在Android ContentProvider中连接表和通知ContentObserver的最佳实践"