2016-04-03 2 views
2

Почему moveToNext() следует указывать после getString()? Если это не так, приложение падает!Android Cursor, moveToNext() error

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

Посмотреть ответ Некоторые Noob Стьюдента о синтаксисе. Вы не используете индекс «i» в своем коде выше, чтобы указать, какую строку вы читаете, - только количество раз, когда вы объединяете строку имен продуктов. Он читает ту же строку n count times!

use of cursor in android

Этот вопрос имеет хороший ответ, объясняющий то, что курсор. Я думаю, что это временная таблица (таблица).

movetoNext() перемещает «курсор» (думаю, выделен прямоугольник электронной таблицы) в следующую строку столбца «productname» (имя следующего продукта).

Это может быть сбой по множеству причин, возможно, имя продукта не является столбцом в курсоре «c». Вот вопрос об отладке, который может быть полезен How to debug android project? Старый шаг, который затем исследует последний метод исключения/ошибки, должен сделать трюк.