为什么Android游标在第一行结果之前启动,并在最后一行之后结束?

evt*_*evt 4 sqlite android cursor

我试图理解为什么他们会在第一个位置之前启动光标以及为什么它会在最后一个位置之后结束.这样做是否有继承优势?

例如:

public abstract int getPosition () 
Run Code Online (Sandbox Code Playgroud)

从以下版本开始:API Level 1返回行集中光标的当前位置.该值从零开始.首次返回行集时,光标将位于第一行之前的位置-1.在返回最后一行之后,对next()的另一次调用将使光标超过最后一个条目,位于count()的位置.

返回当前光标位置.

谢谢,

Jas*_*son 8

因为Cursor不能保证a 填充行.如果Cursor从具有0行的数据库返回,则初始位置为0没有意义,因为位置0处没有行.


Gra*_*and 5

所以你可以这样做:

Cursor c = db.rawQuery(...);
while (c.moveToNext()) {
    // deal with one row at a time
}
Run Code Online (Sandbox Code Playgroud)

到目前为止,它是迭代Cursor结果的最佳方式(请参阅迭代Android游标的最佳方法是什么?),如果它没有在第一行之前启动,它将无法工作.