Можно ли сравнить два курсора?

6

Мне нужно проверить, указаны ли два курсора в тех же строках с одинаковыми значениями. Возможно ли это?

Подробнее:

  • Я загружаю данные из своего собственного ContentProvider
  • Я отправляю запрос на сервер, а затем обновляю свои данные внутри ContentProvider новыми значениями.
  • Если значения изменены - мне нужно уведомить пользователя о том, что он может обновлять данные.
  • 0
    Можете ли вы использовать систему уведомлений контент-провайдера? developer.android.com/reference/android/content/… android.database.ContentObserver, логическое)
Теги:

2 ответа

3
Лучший ответ

В SQLite строки не имеют идентификатора отдельно от своих значений столбцов (но одно из этих значений - ROWID).

Для чего требуется, чтобы ваши данные имели некоторые уникальные столбцы в виде курсора, либо ROWID, либо какое-либо другое значение ключа, которое не имеет дубликатов.

В противном случае вы никогда не узнаете, что то, что вы видите, это всего две записи, которые имеют одинаковые значения в этих столбцах.

4

В соответствии с удаленным ответом CommonsWare:

Перебирайте соответствующие столбцы в курсоре, извлекайте значения и сравнивайте их.

Хотя вы не можете заранее знать тип каждого столбца, вы можете узнать с помощью Cursor.getType(). Вы также можете использовать Cursor.getColumnNames() для получения имени каждого столбца и количества столбцов.

Эта информация позволит вам затем использовать правильный метод доступа для получения каждого значения и сравнения.

  • 1
    Это приведет к ложным совпадениям, если две строки оказались одинаковыми для столбцов, которые вы просматриваете. Чтобы быть точным соответствием, вы должны получить и сравнить индекс UNIQUE, как указано в принятом ответе выше.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню