从游标查询中检索值的奇怪行为

时间:2012-07-31 22:11:04

标签: android

美好的一天,希望倾斜没有误导。请查看下面的代码段并注意注释部分:

//if(cursor.moveToFirst()){
if(cursor.moveToNext() == true){

         // do {
                Log.d(TAG, "Column Name in bindview is " + columnName);
                String name = cursor.getString(cursor.getColumnIndexOrThrow(columnName));

                Log.d(TAG, " name is " + name);


           // } while(cursor.moveToNext());
       //}
   }

现在只有当我使用cursor.moveToNext()时,我才能获得字符串"name"的值。如果我在上面的代码中使用do/while语句,或者使用了cursor.moveTofirst() ,我得到字符串的空值。知道为什么会这样。

* 背景 *正在调用/ CursorAdapter来自onLoadFinished()的{​​{1}} CursorLoader }。

1 个答案:

答案 0 :(得分:0)

也许您正在尝试这样做:

// Get the column's index
int index = cursor.getColumnIndex(columnName); 
String name;

// You might want to check if the column exist with: 
// if(index == -1)
//    return;

// If you have move the Cursor's index, reset it:
// cursor.moveToFirst();

while(cursor.moveToNext()) { // == true is implied
    name = cursor.getString(index);
    Log.d(TAG, " name is " + name);
}

首先在循环外找到列索引,除非更改游标,否则列索引不会改变。然后遍历所有有效结果。