2013-02-11 12 views
6

Ich muss prüfen, ob zwei Cursor auf die gleichen Zeilen mit den gleichen Werten zeigen. Ist es möglich?Kann man zwei Cursor vergleichen?

Weitere Details:

  1. Ich bin Laden von Daten aus meiner eigenen ContentProvider
  2. I Anfrage an den Server zu senden bin und dann meine Daten innerhalb ContentProvider mit neuen Werten zu aktualisieren.
  3. Wenn Werte geändert werden - ich muss den Benutzer benachrichtigen, dass er Daten aktualisieren kann.
+0

Können Sie das Benachrichtigungssystem des Inhaltsanbieters verwenden? http://developer.android.com/reference/android/content/ContentResolver.html#notifyChange(android.net.Uri, android.database.ContentObserver, boolean) –

Antwort

3

In SQLite haben Zeilen keine Identität, die von ihren Spaltenwerten getrennt ist (aber der ROWID ist einer dieser Werte).

Was Sie wollen, erfordert, dass Ihre Daten einige eindeutige Spalten als Teil des Cursors haben, entweder den ROWID oder einen anderen Schlüsselwert, der garantiert keine Duplikate enthält.

Andernfalls können Sie nie wissen, ob das, was Sie sehen, nur zwei Datensätze ist, die in diesen Spalten dieselben Werte haben.

4

Per CommonsWare gelöschten Antwort:

Iterate über die relevanten Spalten im Cursor, rufen Sie die Werte und jede vergleichen.

Auch wenn Sie nicht im Voraus den Typ jeder Spalte wissen, können Sie mit Cursor.getType() herausfinden. Sie können auch Cursor.getColumnNames() verwenden, um den Namen jeder Spalte und die Anzahl der Spalten abzurufen.

Mit dieser Information können Sie dann die richtige Zugriffsmethode verwenden, um die einzelnen Werte zu erhalten und zu vergleichen.

+1

Dies würde zu falschen Übereinstimmungen führen, wenn zwei Zeilen identisch sind die Spalten, die Sie betrachten. Um eine echte Übereinstimmung zu erzielen, müssen Sie einen UNIQUE-Index abrufen und vergleichen, wie in der oben genannten Antwort erwähnt. – brunobowden