2016-04-03 52 views
2

爲什麼moveToNext()應該在getString()之後給出?如果不是,應用程序崩潰!Android遊標,moveToNext()錯誤

for(int i=0;i<c.getCount();i++) 
{ 
    result+= c.getString(c.getColumnIndex("productname"));     
    c.moveToNext(); 
} 
+1

你必須'c.moveToNext();'在調用'c.getString'之前 – pskink

回答

0
if (c.moveToFirst()){ 
    while(!c.isAfterLast()){ 
     String productNames[i] = c.getString(c.getColumnIndex("productname")); 
//Maybe a string array is better than one long string? 
     i++ 
     c.moveToNext(); 
    } 
} 
c.close(); 

How to retrieve data from cursor class

看到一些菜鳥學生的有關語法的答案。您在上面的代碼中沒有使用'i'索引來指定您正在閱讀的行 - 僅限於連接產品名稱字符串的次數。它讀取相同的行數n次!

use of cursor in android

這個問題有一個很好的答案解釋光標是什麼。我認爲它是一個臨時表格(Spreadsheet)。 movetoNext()將「遊標」(認爲突出顯示的電子表格矩形)移動到「productname」列(下一個產品名稱)的下一行。

它可能會因爲很多原因而崩潰,也許productname不是光標'c'中的列。這裏有一個關於可能有用的調試的問題How to debug android project? 舊的步驟然後檢查最後的異常/錯誤方法應該做的伎倆。