1

我有来自游标加载器的游标。问题是,如果我尝试移动该光标,它不会向前移动并陷入无限循环。

  public void onLoadFinished(Loader<Cursor> loader, final Cursor cursor) {
    Log.d(TAG, "CALLED onLoadFinished");
    ...
    else if(loader.getId() == LOADER_1)
    {
        while(cursor.moveToFirst())
        {
              Log.d(TAG, "LOOPING");
              cursor.moveToNext();
        }
    }
 }
4

1 回答 1

2

您当前的while循环将不起作用。现在,您将光标移动到while条件中的第一个位置,然后在while块内将光标推到下一个位置。当while块完成时,将再次测试条件,因此cursor.moveToFirst()将再次调用。这将一次又一次地继续。基本上,您将在无限循环中从光标的第一个位置移动到第二个位置。

循环应该是这样的:

while(cursor.moveToNext()) {
     Log.d(TAG, "LOOPING");
     // do other stuff 
     // each time you'll have a new row from the cursor
}
于 2012-08-05T06:22:35.590 回答