2013-02-11 102 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