2013-02-11 12 views
6

2つのカーソルが同じ値を持つ同じ行を指しているかどうかを確認する必要があります。出来ますか?2つのカーソルを比較することはできますか?

詳細:

  1. 私はサーバーにリクエストを送信して、新しい値でContentProvider内の私のデータを更新しています私自身のContentProvider
  2. からデータをロードしています。
  3. 値が変更された場合 - データを更新できることをユーザーに通知する必要があります。 CommonsWareの削除答えを1として
+0

コンテンツプロバイダ通知システムを使用できますか? http://developer.android.com/reference/android/content/ContentResolver.html#notifyChange(android.net.Uri android.database.ContentObserver、boolean) –

答えて

3

SQLiteでは、行は列の値とは別のIDを持ちません(ただし、ROWIDはこれらの値の1つです)。

データにカーソルの一部として固有の列(ROWIDまたは重複がないことが保証されている他のキー値)が必要です。

これ以外の場合は、表示されているものが、その列に同じ値を持つレコードが2つだけであるかどうかはわかりません。

4

反復Cursorの中で関連する列の上に、値を取得し、それぞれを比較します。

各列の種類を事前に知ることはできませんが、Cursor.getType()で見つけることができます。 Cursor.getColumnNames()を使用して、各列の名前と列の数を取得することもできます。

この情報を使用すると、適切なアクセサメソッドを使用して各値を取得し、比較することができます。

+1

これは、2つの行が同じ場合に誤った一致を生成します。あなたが見ている列。真の一致であるためには、上記の受け入れられた答えで述べたように、UNIQUEインデックスを取得して比較する必要があります。 – brunobowden

関連する問題