1. 程式人生 > >Android Cursor的正確遍歷方法

Android Cursor的正確遍歷方法

專案中用到Cursor,之前的兄弟是這樣寫的:

if(cursor ==null) {

 Log.w(TAG,"....");

}else{

while(cursor.moveToNext()){

    ....

}
cursor.close();

}

遍歷出的結果很奇怪,本來查出10條資料,然通過上述程式碼遍歷會丟資料。在沒debug,這段程式碼時,我排除了好多假設,花了我好久的時間。而且每次遍歷的資料條數都在變。

找了好久才發現,這段遍歷的方式不對。他就沒有把Cursor移動到起始位置。

正確的遍歷方式是這樣的:

//cursor不為空,moveToFirst為true說明有資料

if(cursor!=null&&cursor.moveToFirst()){

  do{

  }while(cursor.moveToNext);

}

或著

if(cursor!=null&&cursor.moveToFirst()){

while (!result.isAfterLast()) {

}
cursor.close();
}