在学习迭代光标时,我learned我需要先移动到位置" -1"然后使用" moveToNext"在循环中:
cursor.moveToPosition(-1);
for (int i = 0; cursor.moveToNext(); i++) {
//do something with the cursor
}
虽然在数学上这是有道理的,但我不知道将光标移动到负位置意味着什么。 documentation只是表示它有效 - 似乎没有说明它是如何使用的。
这仅用于使迭代成为可能,还是位置-1还有其他用例?
答案 0 :(得分:2)
光标不应该处于负位置,光标数据从位置0开始,这就是为什么在使用
获取数据之前总是需要将光标移动到第一个位置的原因if(cursor.moveToFirst()){
//you have data in the cursor
}
现在通过光标只需使用do / while循环
do{
//process cursor data
}while(cursor.moveToNext);
如果你将光标移动到第一个位置,然后尝试执行for循环,光标将尝试在你处理第一个位置之前移动到下一个位置。你正在使用for循环执行什么约定。这就是为什么当光标中有1个东西时你不能进入for循环
答案 1 :(得分:1)
游标中的-1索引是默认的起始位置和后备位置。如果存在,调用moveToFirst将始终移动到位置0。您想确定是否使用moveToFirst,处理该条目然后调用moveToNext。
if(cursor.moveToFirst()){ // moves to 0, process it.
process(...);
while(cursor.moveToNext()){ // moves to 1...n, process them.
process(...);
}
}
这只是一种接近它的方法,希望它有所帮助。
祝你好运
答案 2 :(得分:0)
我怀疑默认光标位置是故意设置为-1,以使我们能够只用while(cursor.moveToNext()) {...}
进行迭代。光标的负面位置没有其他原因。
只要您以前没有影响此光标,就不需要将位置重置为-1。
答案 3 :(得分:-1)
-1是光标的默认位置,您始终需要将光标移动到第一个位置,即第0个索引。执行您的活动
cursor.moveToFirst(); //moves the cursor to the first position
现在迭代
while(cursor.moveToNext())//when there's a value in cursor.moveToNext
{
//your action to be performed
}