Android游标如何处于负面位置?

时间:2014-12-17 16:23:19

标签: android android-cursor

在学习迭代光标时,我learned我需要先移动到位置" -1"然后使用" moveToNext"在循环中:

cursor.moveToPosition(-1);
for (int i = 0; cursor.moveToNext(); i++) {
  //do something with the cursor
}

虽然在数学上这是有道理的,但我不知道将光标移动到负位置意味着什么。 documentation只是表示它有效 - 似乎没有说明它是如何使用的。

这仅用于使迭代成为可能,还是位置-1还有其他用例?

4 个答案:

答案 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
}