gpt4 book ai didi

android - 在 Android ContentProvider 中连接表和通知 ContentObservers 的最佳实践

转载 作者:IT王子 更新时间:2023-10-29 06:18:31 26 4
gpt4 key购买 nike

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

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

例如,我有一个 Articles 表和一个 ArticleExtras 表。 Articles 代表文章本身,而 ArticleExtras 代表关于特定文章的附加信息,如评论数。

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

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

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

但是,当我获取评论数量 (ArticleExtras) 时,我希望通知正在监视 content://com.myapp.content/Articles 更改的同一个 CursorAdapter ,所以我可以在 ListView 中更新我的行。

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

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

最佳答案

结帐 ContactsProvider2 ,在其中他们将通知 uri 设置为 AUTHORITY_URI,这似乎是提供程序中其他 URI 的全部。我遇到了同样的问题,并且我自己已经为一个有多个表的提供者尝试了这个,并在这些表上进行了连接,它工作正常。

关于android - 在 Android ContentProvider 中连接表和通知 ContentObservers 的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11895329/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com