2010-05-11 33 views
32

Tôi cần biết cách truy xuất dữ liệu từ con trỏ. Tôi cần điều này vì ringtonemanager trả về tất cả các tệp âm thanh dưới dạng đối tượng con trỏ, tôi cần biết cách lấy các giá trị.Cách lấy dữ liệu từ lớp con trỏ

Anbudan.

+0

Chỉ cần đọc tài liệu trong API: http://developer.android.com/reference/android /database/Cursor.html Hoặc có một hướng dẫn hay: http://developer.android.com/guide/tutorials/notepad/index.html Ngoài ra câu hỏi này có thể giúp bạn: http://stackoverflow.com/questions/ 903343/cursor-get-the-field-value-android – RoflcoptrException

Trả lời

108

Một khi bạn có đối tượng con trỏ, bạn có thể làm một cái gì đó như thế này:

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

Có một ")" bị thiếu ở đây: String data = cursor.getString (con trỏ. getColumnIndex ("dữ liệu")); . Không nghiêm trọng, chỉ để hoàn thành câu trả lời của bạn. – JJ86

+0

Tôi có đúng với ý nghĩa rằng ngay cả khi bạn chỉ mong đợi một hàng, bạn cần phải gọi cursor.moveToFirst() vì mảng khác chứa dữ liệu sẽ luôn trống rỗng ??? – AntonSack

+1

Tôi điều "! Cursor.isAfterLast()" nên ở trong vòng lặp while của bạn, là "Một số sinh viên Noob", nếu không nó sẽ gây ra vòng lặp vô hạn quảng cáo. – Redauser

14

câu trả lời Salvador sẽ tiếp tục tìm nạp dữ liệu từ hàng sau khi hàng cuối cùng vì moveToNext() sẽ chỉ trả về false khi con trỏ là chỉ tại hàng sau hàng cuối cùng. Nó sẽ tiếp tục lặp lại ngay cả khi con trỏ trỏ tới hàng cuối cùng.

Mẫu đúng phải là:

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

này trông tốt hơn một chút:

for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) { 
    ... 
} 
Các vấn đề liên quan