2010-06-07 5 views
0

В моем приложении у меня есть поле курсора и в методе onStart() моего Android-сервиса я создаю его, извлекая записи из моей базы данных. Когда я просматриваю свой курсор в методе onStart(), я нахожу несколько записей, но когда я пытаюсь использовать их в своем методе trigger(), он имеет нулевые записи.Используйте поле курсора другим способом

поле private Cursor c;

в OnStart() c = dbHelper.fetchAllRecords();

в триггере() c.getCount() возвращает 0

Я не закрывал курсор раньше, чем в моем onDestroy() методе

ответ

1

Скорее всего, курсор фактически не «проигрывает записи», а скорее может быть для до c.movetofirst() перед повторением через записи КАЖДОЕ ВРЕМЯ.

Другими словами, по мере того, как вы перебираете записи курсора, указатель записи поднимается вверх, вверх, пока он не пройдет «мимо последней записи». Итак, чтобы снова итератировать курсор, вам нужно сбросить указатель записи, выполнив c.movetofirst().

c.moveToFirst(); 
while (!c.isAfterLast()) 
    print ("Data: " + c.getString(0)); 

Затем работает один и тот же While-цикл снова не будет выполняться, потому как указатель курсора не был сброшен:

while (!c.isAfterLast()) 
    print ("Data: " + c.getString(0)); 

(ничего не печатается)

Так вы на самом деле нужен для изменения второго кодового блока до:

c.moveToFirst(); 
while (!c.isAfterLast()) 
    print ("Data: " + c.getString(0)); 
Смежные вопросы