在我的应用程序中,我从不同的类中插入数据库中的值,这给了我插入行的id。 我在我的UI中注册了它的观察者,每当插入任何行时,我的UI内容观察者都会被调用。 这两个类完全不同,所以我发现很难插入行id。 有没有办法在我的内容观察器中获取此行ID,以便我可以相应地更新我的UI?
P.S。 context.getContentResolver()。notifyChange(uri,null);不是我的解决方案,因为我希望在UI上实现(更新有效的更改)。
答案 0 :(得分:2)
插入新行时,您必须手动调用notifyChange:
context.getContentResolver().notifyChange(uri, null);
插入行的代码应该可以访问新的rowid,并且应该能够构造要传递给notifyChange的URI。当调用通知更改时,应该更新所有ContentObservers
。
答案 1 :(得分:2)
现在在android api 16中,有可能通过onChange的版本获取OnChage方法中修改行的URI,该版本将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的问题,并没有得到任何答案=(