Android Cursor的正确遍历方法

时间:2021-11-22 22:53:35

项目中用到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();
}