【发布时间】:2014-12-17 16:23:19
【问题描述】:
在学习迭代光标时,我learned 认为我需要先移动到位置“-1”,然后在循环中使用“moveToNext”:
cursor.moveToPosition(-1);
for (int i = 0; cursor.moveToNext(); i++) {
//do something with the cursor
}
虽然从数学上讲这是有道理的,但我不知道将光标移动到负位置意味着什么。 documentation 只是说它是有效的——似乎没有说明它是如何使用的。
这仅用于使迭代成为可能,还是位置 -1 有其他用例?
【问题讨论】:
-
这是非常标准的游标:游标从第一行(索引为 0)之前开始。 stackoverflow.com/a/10723771/139010
-
你不移动到负位置你将它移动到第一个位置
cursor.moveToFirst()aka 0 -
@tyczj 如果我移动到第一个位置并且只有一个位置,我永远不会进入循环。
-
@njzk2 我相信@adamdport 指的是my comment on the accepted answer to that question。基本上有两种干净的迭代方式:(a)
moveToPosition(-1)后跟一个 while 循环,(b)moveToFirst后跟一个 do-while 循环。 -
@VickyChijwani moveToFirst 如果您将其包装在 if 语句中,它确实有效,moveToFirst 返回一个布尔值是有原因的,您不应该忽略它