2013-02-11 103 views
6

我需要检查两个游标是否指向相同值的相同行。可能吗?是否可以比较两个游标?

更多细节:

  1. 我从我自己是加载数据ContentProvider
  2. 我发送请求到服务器,然后更新我的资料里面ContentProvider用新值。
  3. 如果更改了值 - 我需要通知用户他可以更新数据。
+0

您可以使用内容提供者通知系统吗? http://developer.android.com/reference/android/content/ContentResolver.html#notifyChange(android.net.Uri,android.database.ContentObserver,布尔型) – 2013-02-11 14:05:25

回答

3

在SQLite中,行没有与其列值分开的标识(但ROWID是其中的一个值)。

你想要什么要求你的数据有一些独特的列作为游标的一部分,或者是ROWID,或者其他一些保证没有重复的键值。

否则,您永远无法知道您所看到的只是在这些列中碰巧具有相同值的两条记录。

4

按CommonsWare的删除回答:

遍历在光标的相关列,检索值,并比较每个。

虽然你可能无法事先知道每一列的类型,你可以找到与Cursor.getType()。您还可以使用Cursor.getColumnNames()获取每列的名称和列数。

此信息将允许您使用正确的访问器方法获取每个值并进行比较。

+1

如果两行碰巧是相同的,这会生成错误匹配您正在查看的列。要成为一个真正的匹配项,您必须获取并比较一个UNIQUE索引,如上面接受的答案中所述。 – brunobowden 2013-11-03 22:02:11