2010-09-23 2 views
3

Мой пользователь может просмотреть список записей. Я сохраняю последнюю увиденную запись _ID в настройках, чтобы они могли начать с того места, где они ушли, когда они в следующий раз обращаются к приложению.Перемещение положения курсора на определенный ID

Курсор, который у меня есть также поле с идентификатором _ID. Однако я не знаю, как перемещать курсор в эту конкретную строку. Следующие функции курсора нужен конкретный постион идти на: -

moveToPosition (INT позиция)
шаг (INT смещение)

_ID не может быть последовательным (из-за удалений и т.д.).

Любой способ сделать это?

ответ

0

Вы можете только два запроса, один для NextEmployee

SELECT MIN(RecordId) WHERE RecordId > currentRecordId 

и один для PreviousEmployee

SELECT MAX(RecordId) WHERE RecordId < currentRecordId 

, а затем вызвать moveToPosition с результатами?

Я также смущен относительно того, почему вы используете курсор, почему бы вам просто не воспользоваться основанной на записи записью?

+0

Майк, я собираюсь собрать кучу записей за раз. Причина в том, что пользователь будет просматривать несколько записей за раз (один за другим), поэтому я не хочу делать запрос базы данных для каждой записи. Я хочу получить кучу и хранить ее локально в курсоре, поэтому, когда пользователь нажимает кнопки «Далее» и «Предыдущий», я могу просто переместить позицию курсора и запись в виде изображения вместо запроса к базе данных. Надеюсь, это имеет смысл. – OceanBlue

0

У меня такая же проблема, и я подумал о , создав HashMap с _id как ключи и позиции в курсоре как значения.

Для создания этого словаря я должен выполнить итерацию по всем элементам курсора один раз, а затем я буду знать положение каждого _id внутри курсора (имея в виду, что он не может быть изменен одновременно или я получаю неправильное данные).

Считаете ли вы, что это правильный подход?