如何在我的内容观察器中获取插入行的 URI?

Posted

技术标签:

【中文标题】如何在我的内容观察器中获取插入行的 URI?【英文标题】:How to get URI of inserted row in my content observer? 【发布时间】:2012-01-15 23:54:48 【问题描述】:

在我的应用程序中,我在数据库中插入来自不同类的值,这给了我插入行的 id。 我已经在我的 UI 中注册了它的观察者,每当插入任何行时,都会调用我的 UI 内容观察者。 这两个类完全不同,所以我发现很难插入行 ID。 有什么方法可以在我的内容观察器中获取此行 ID,以便我可以相应地更新我的 UI?

附: context.getContentResolver().notifyChange(uri, null);不是我的解决方案,因为我希望在 UI 上生效(更新生效的更改)。

【问题讨论】:

您好,您有更改联系人的有效 URI 吗?请告诉我 【参考方案1】:

插入新行时,必须手动调用notifyChange:

context.getContentResolver().notifyChange(uri, null);

插入行的代码应该可以访问新的 rowid,并且应该能够构造 URI 以传递给 notifyChange。当调用 notify change 时,应该会导致所有 ContentObservers 被更新。

【讨论】:

谢谢埃里希。但这我知道。我的问题是如何在观察者的 onChange 方法中检索此行 ID?这样只有插入的行会被查询,而不是整个数据库。【参考方案2】:

现在在 android api 16 中,可以通过将 URI 作为参数的 onChange 版本在 OnChage 方法中获取修改行的 URI。您可以在 Content Observer 文档中找到有关它的更多详细信息 http://developer.android.com/reference/android/database/ContentObserver.html

对于较旧的 api 版本,我不确定是否有解决方案(不添加更多逻辑,例如在数据库上实现标志)。我专门针对“getting changed uri on ContentObserver Onchange on older versions of the API”上的旧 api 提出了这个问题,但没有得到任何答案 =(

【讨论】:

以上是关于如何在我的内容观察器中获取插入行的 URI?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MySQL 中获取多个插入行的 ID?

如何在没有'id'列的MySql中获取最后插入的记录?

如何在 ASP.NET 中获取根域 URI?

如何在我的微调器中使用 getItemAtPosition 从谷歌地图中的火力基地使用 android studio

CodeIgniter / PHP:如何在 .php 视图页面中获取 URI

如何从 Uri 获取位图?