2010-05-11 11 views
32

Potrzebuję wiedzieć, jak pobrać dane z kursora. Potrzebuję tego, ponieważ program odtwarzający zwraca wszystkie pliki audio w postaci obiektu kursora, muszę wiedzieć, jak pobrać wartości.Jak pobierać dane z klasy kursorów

Anbudan.

+0

Wystarczy zapoznać się z dokumentacją w API: http://developer.android.com/reference/android /database/Cursor.html Albo jest ładny tutorial: http://developer.android.com/guide/tutorials/notepad/index.html Również to pytanie może ci pomóc: http://stackoverflow.com/questions/ 903343/cursor-get-the-field-value-android – RoflcoptrException

Odpowiedz

108

Gdy masz obiekt Cursor, można zrobić coś takiego:

if (cursor.moveToFirst()){ 
    do{ 
     String data = cursor.getString(cursor.getColumnIndex("data")); 
     // do what ever you want here 
    }while(cursor.moveToNext()); 
} 
cursor.close(); 
+0

Brak jest ")": String data = cursor.getString (kursor. getColumnIndex ("data")); . Nie poważne, tylko po to, by ukończyć twoją odpowiedź. – JJ86

+0

Mam rację w tym sensie, że nawet jeśli oczekujesz tylko jednego wiersza, musisz wywołać cursor.moveToFirst(), ponieważ inaczej tablica zawierająca dane będzie zawsze pusta ??? – AntonSack

+1

I thing "! Cursor.isAfterLast()" powinien pozostać w pętli while, jak "Some Noob Student", w przeciwnym razie spowoduje nieskończoną pętlę reklamy. – Redauser

14

odpowiedź Salvador będzie nadal pobierać dane z rzędu po ostatnim rzędzie ponieważ moveToNext() tylko return false gdy kursor wskazuje w rzędzie po ostatnim rzędzie. Będzie kontynuował iterację, nawet jeśli kursor wskazuje ostatni wiersz.

Poprawny szablon powinien być:

if (cursor.moveToFirst()){ 
    while(!cursor.isAfterLast()){ 
     String data = cursor.getString(cursor.getColumnIndex("data")); 
     // do what ever you want here 
     cursor.moveToNext(); 
    } 
} 
cursor.close(); 
20

To wygląda nieco lepiej:

for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) { 
    ... 
} 
Powiązane problemy