[英]Cursor loop iteration not displaying first value
所以,我有一個查詢返回一個帶有所有值的Cursor(我用cursor.getCount()確認了這一點,其中返回的int等於數據庫中的記錄數),但由於某種原因,無論迭代循環我是什么寫我似乎永遠無法檢索列表的第一個值。
private void addAllUnsentCrapportsToList() {
mDbAdapter.open();
Cursor cursor = mDbAdapter.getAllCrapports();
cursor.moveToFirst();
String text = "";
while(cursor.isAfterLast() == false){
text = text
+ "typ: " + cursor.getString(cursor.getColumnIndex(DbAdapter.CRAPPORT_KEY_GARBAGETYPE))
+ " kommentar: " + cursor.getString(cursor.getColumnIndex(DbAdapter.CRAPPORT_KEY_COMMENT))
+ "\n";
cursor.moveToNext();
}
unsentCrapportList.setText(text);
}
這段代碼顯示所有值,不包括第一個。 我究竟做錯了什么? 我嘗試了很多種方法,包括同時,等等,但總是遇到同樣的錯誤。
我錯過了什么?
它可能更好用
if (cursor.moveToFirst()) {
while (cursor.moveToNext()) {
// Your code
}
}
我沒看到你的代碼有什么問題。 那么也許你沒有從db
獲得第一個值? 您是否嘗試在cursor.moveToFirst();
之后打印數據cursor.moveToFirst();
看哪個是第一個元素?
事實證明代碼沒有任何問題。 我不得不在Eclipse中進行“項目清理”,然后重新啟動模擬器。 無論如何,感謝所有答案。
cursor.moveToFirst();
while (cursor.moveToNext()) {
// Your code
}
這從來沒有讓我失望過。 嘗試一下,看看它是怎么回事?
使用LOG進行一些日志記錄以查看您獲得的內容並使用http://sourceforge.net/projects/sqlitebrowser/查看數據庫的外觀
編輯:順便說一下,你沒有使用startManagingCursor(cursor);
任何特殊原因startManagingCursor(cursor);
? 可能不會導致錯誤,只是想知道,因為它似乎很方便。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.