2016-04-03 8 views
2

getString()の後にmoveToNext()を指定する必要があるのはなぜですか?そうでない場合は、アプリがクラッシュします。Androidのカーソル、moveToNext()エラー

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

あなたは 'c.getString'を呼び出す前に' c.moveToNext(); 'する必要があります – 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

構文の一部Noobの学生の答えを参照してください。上記のコードでは、あなたが読んでいる行を指定するために 'i'インデックスを使用していません。これは、製品名の文字列を連結した回数だけです。それは同じ行nカウント回数を読み取ります!

use of cursor in android

この質問は、カーソルが何であるかを説明する良い答えを持っています。私は一時的なテーブル(スプレッドシート)と考えています。

movetoNext()は、「カーソル」(強調表示されたスプレッドシートの矩形を考える)を「productname」列(次の製品の名前)の次の行に移動します。

多くの理由でクラッシュする可能性があります。おそらくproductnameはカーソル 'c'の列ではありません。ここでは有用かもしれないデバッグについての質問です。How to debug android project? 最後の例外/エラーメソッドを調べて古いステップを確認してください。

関連する問題