迭代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方法。当然必须有一个更简洁的方式?
3 回答
噜噜哒
TA贡献1784条经验 获得超7个赞
最简单的方法是:
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()) { ... }}
潇潇雨雨
TA贡献1833条经验 获得超4个赞
我只想指出第三种替代方案,如果光标不在起始位置也可以使用:
if (cursor.moveToFirst()) { do { // do what you need with the cursor here } while (cursor.moveToNext());}
- 3 回答
- 0 关注
- 997 浏览
添加回答
举报
0/150
提交
取消