【问题标题】:How to retrieve data from cursor class如何从游标类中检索数据
【发布时间】:2010-05-11 12:26:33
【问题描述】:

我需要知道如何从游标中检索数据。我需要这个,因为 ringtonemanager 以光标对象的形式返回所有音频文件,我需要知道如何检索这些值。

安布丹。

【问题讨论】:

标签: android


【解决方案1】:

一旦你有了 Cursor 对象,你就可以这样做:

if (cursor.moveToFirst()){
   do{
      String data = cursor.getString(cursor.getColumnIndex("data"));
      // do what ever you want here
   }while(cursor.moveToNext());
}
cursor.close();

【讨论】:

  • 这里缺少一个“)”:String data = cursor.getString(cursor.getColumnIndex("data")); .不认真,只是为了完成你的答案。
  • 我是否正确,即使您只期望一行,您也需要调用 cursor.moveToFirst() 否则包含数据的数组将始终为空???
  • 我的东西“!cursor.isAfterLast()”应该留在你的while循环中,作为“Some Noob Student”,否则会导致广告无限循环。
  • 此代码将在光标最后一行之后的一行上尝试调用 getString(int) 时崩溃。查看@tcb 答案以获得实际有效的解决方案
  • 这里的“数据”是什么?是否针对所提出的问题?
【解决方案2】:

这看起来好多了:

for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) {
    ...
}

【讨论】:

    【解决方案3】:

    萨尔瓦多的答案将继续从最后一行之后的行中获取数据,因为moveToNext() 只会在光标指向最后一行之后的行时返回 false。即使光标指向最后一行,它也会继续迭代。

    正确的模板应该是:

    if (cursor.moveToFirst()){
       while(!cursor.isAfterLast()){
          String data = cursor.getString(cursor.getColumnIndex("data"));
          // do what ever you want here
          cursor.moveToNext();
       }
    }
    cursor.close();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-01
      • 1970-01-01
      • 2015-01-16
      • 1970-01-01
      相关资源
      最近更新 更多