6

我试图理解为什么他们会在一行中的第一个位置之前开始光标,以及为什么它会在最后一个位置之后结束。这样做有继承优势吗?

例如:

public abstract int getPosition () 

自:API 级别 1 返回行集中游标的当前位置。该值从零开始。当第一次返回行集时,光标将位于位置 -1,即第一行之前。返回最后一行后,再次调用 next() 将使光标离开最后一个条目,位于 count() 的位置。

返回当前光标位置。

谢谢你。

4

3 回答 3

9

因为Cursor不保证 a 会填充行。如果你Cursor从一个有 0 行的数据库中得到一个返回,那么初始位置为 0 没有意义,因为位置 0 没有行。

于 2012-07-13T22:48:18.727 回答
6

所以你可以这样做:

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

这是迄今为止迭代游标结果的最巧妙方法(请参阅迭代 Android 游标的最佳方法是什么?),如果它没有在第一行之前开始,它将无法工作。

于 2012-07-13T22:40:49.427 回答
0

AndroidSQLiteCursor是原生 SQLite 数据库游标的包装对象,它是一种控制结构,可让您遍历数据库中的记录。
我假设,在调用setPositionmoveToFirst本地游标之前,甚至不会将查询结果加载到内存中以节省空间。

于 2012-07-13T22:49:15.590 回答