迭代Android游标的最佳方法是什么?

迭代Android游标的最佳方法是什么?

我经常看到代码涉及迭代数据库查询的结果,对每一行做一些事情,然后继续前进到下一行。典型的例子如下。

Cursor cursor = db.rawQuery(...);cursor.moveToFirst();while (cursor.isAfterLast() == false) {
    ...
    cursor.moveToNext();}
Cursor cursor = db.rawQuery(...);for (boolean hasItem = cursor.moveToFirst(); 
     hasItem; 
     hasItem = cursor.moveToNext()) {
    ...}
Cursor cursor = db.rawQuery(...);if (cursor.moveToFirst()) {
    do {
        ...                 
    } while (cursor.moveToNext());}

这些对我来说似乎过于冗长,每次都有多次调用Cursor方法。当然必须有一个更简洁的方式?


慕森卡
浏览 998回答 3
3回答

噜噜哒

最简单的方法是:while (cursor.moveToNext()) {     ...}游标在第一个结果行之前开始,因此在第一次迭代时,如果存在,则移动到第一个结果。如果光标为空,或者已经处理了最后一行,则循环退出整齐。当然,完成后不要忘记关闭光标,最好是在finally子句中。Cursor cursor = db.rawQuery(...);try {     while (cursor.moveToNext()) {         ...     }} finally {     cursor.close();}如果您的目标是API 19+,则可以使用try-with-resources。try (Cursor cursor = db.rawQuery(...)) {     while (cursor.moveToNext()) {         ...     }}

潇潇雨雨

我只想指出第三种替代方案,如果光标不在起始位置也可以使用:if (cursor.moveToFirst()) {     do {         // do what you need with the cursor here     } while (cursor.moveToNext());}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Android