簡體   English   中英

游標循環迭代不顯示第一個值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM