Java Android cursor.moveBeforeFirst()

Java Android cursor.moveBeforeFirst(),java,android,cursor,Java,Android,Cursor,为什么Android中的Cursor没有moveBeforeFirst() 在其他风格的Java中也有类似的方法,如果需要对结果集进行重新迭代(例如,在while(cursor.moveToNext()){…}循环中),这些方法非常有用 目前,我通过使用cursor.moveToPosition(-1)达到了预期的效果,但是由于缺少moveBeforeFirst()方法,我想知道这是否是一种好的做法?(而我认为我唯一的选择是重新运行相同的查询…您将实现以下所需的行为 if (myCursor !

为什么Android中的
Cursor
没有
moveBeforeFirst()

在其他风格的Java中也有类似的方法,如果需要对结果集进行重新迭代(例如,在
while(cursor.moveToNext()){…}
循环中),这些方法非常有用


目前,我通过使用
cursor.moveToPosition(-1)
达到了预期的效果,但是由于缺少
moveBeforeFirst()
方法,我想知道这是否是一种好的做法?(而我认为我唯一的选择是重新运行相同的查询…

您将实现以下所需的行为

if (myCursor != null) { //Tests to see if the cursor exists. 
    if (myCursor.moveToFirst()) {
        // myCursor moved to the first record
    } else {
        // myCursor is empty
    }
} else {
    // myCursor is null
} 

调用moveToFirst()可以做两件事:它允许您测试查询是否返回空集(通过测试返回值),并将光标移动到第一个结果(当集合不为空时)

您将实现以下所需的行为

if (myCursor != null) { //Tests to see if the cursor exists. 
    if (myCursor.moveToFirst()) {
        // myCursor moved to the first record
    } else {
        // myCursor is empty
    }
} else {
    // myCursor is null
} 

调用moveToFirst()可以做两件事:它允许您测试查询是否返回空集(通过测试返回值),并将光标移动到第一个结果(当集合不为空时)

您将实现以下所需的行为

if (myCursor != null) { //Tests to see if the cursor exists. 
    if (myCursor.moveToFirst()) {
        // myCursor moved to the first record
    } else {
        // myCursor is empty
    }
} else {
    // myCursor is null
} 

调用moveToFirst()可以做两件事:它允许您测试查询是否返回空集(通过测试返回值),并将光标移动到第一个结果(当集合不为空时)

您将实现以下所需的行为

if (myCursor != null) { //Tests to see if the cursor exists. 
    if (myCursor.moveToFirst()) {
        // myCursor moved to the first record
    } else {
        // myCursor is empty
    }
} else {
    // myCursor is null
} 

调用moveToFirst()可以做两件事:它允许您测试查询是否返回空集(通过测试返回值),并将光标移动到第一个结果(当集合不为空时)

用这种方法试试,使用do while循环,它会给你所有的列表包括第一行和最后一行

    if (cursor != null) {  
        if (cursor.moveToFirst()) {
            do{

            }while(cursor.moveToNext());
        } else {
           //cursor empty
        }
    } 

试着用这种方法,使用DoWhile循环,它会给你们所有的列表包括第一行和最后一行

    if (cursor != null) {  
        if (cursor.moveToFirst()) {
            do{

            }while(cursor.moveToNext());
        } else {
           //cursor empty
        }
    } 

试着用这种方法,使用DoWhile循环,它会给你们所有的列表包括第一行和最后一行

    if (cursor != null) {  
        if (cursor.moveToFirst()) {
            do{

            }while(cursor.moveToNext());
        } else {
           //cursor empty
        }
    } 

试着用这种方法,使用DoWhile循环,它会给你们所有的列表包括第一行和最后一行

    if (cursor != null) {  
        if (cursor.moveToFirst()) {
            do{

            }while(cursor.moveToNext());
        } else {
           //cursor empty
        }
    } 

有一个moveToFirst()方法…
moveBeforeFirst
将转到
最后一行
??如果是这样,我们有
moveToLastRow
:-/@brso05
moveToFirst()
方法移动到光标的第一个位置,这样当您想使用
while(cursor.moveToNext())
循环时,它会从第二个元素开始,而不是从第一个元素开始,这就是为什么@ban geoengineering需要在第一个位置之前设置光标的原因。我知道光标的作用,但您可以将循环更改为do while循环,或者有许多选项可以更改您的循环以使其工作。@ban geoengineering您应该像现在这样使用绝对位置。游标。移动位置(-1);有一个moveToFirst()方法…
moveBeforeFirst
将转到
最后一行
??如果是这样,我们有
moveToLastRow
:-/@brso05
moveToFirst()
方法移动到光标的第一个位置,这样当您想使用
while(cursor.moveToNext())
循环时,它会从第二个元素开始,而不是从第一个元素开始,这就是为什么@ban geoengineering需要在第一个位置之前设置光标的原因。我知道光标的作用,但您可以将循环更改为do while循环,或者有许多选项可以更改您的循环以使其工作。@ban geoengineering您应该像现在这样使用绝对位置。游标。移动位置(-1);有一个moveToFirst()方法…
moveBeforeFirst
将转到
最后一行
??如果是这样,我们有
moveToLastRow
:-/@brso05
moveToFirst()
方法移动到光标的第一个位置,这样当您想使用
while(cursor.moveToNext())
循环时,它会从第二个元素开始,而不是从第一个元素开始,这就是为什么@ban geoengineering需要在第一个位置之前设置光标的原因。我知道光标的作用,但您可以将循环更改为do while循环,或者有许多选项可以更改您的循环以使其工作。@ban geoengineering您应该像现在这样使用绝对位置。游标。移动位置(-1);有一个moveToFirst()方法…
moveBeforeFirst
将转到
最后一行
??如果是这样,我们有
moveToLastRow
:-/@brso05
moveToFirst()
方法移动到光标的第一个位置,这样当您想使用
while(cursor.moveToNext())
循环时,它会从第二个元素开始,而不是从第一个元素开始,这就是为什么@ban geoengineering需要在第一个位置之前设置光标的原因。我知道光标的作用,但您可以将循环更改为do while循环,或者有许多选项可以更改您的循环以使其工作。@ban geoengineering您应该像现在这样使用绝对位置。游标。移动位置(-1);你能用循环的方式更新你的答案吗?因为如果我在
之前使用
myCursor.moveToFirst()
while(myCursor.moveToNext()){…}
那么第一行将被跳过。你能用循环的方式更新你的答案吗?因为如果我在
之前使用
myCursor.moveToFirst()
吗(myCursor.moveToNext()){…}
那么第一行将被跳过。你能用循环更新你的答案吗,因为如果我使用
myCursor.moveToFirst()
before
while(myCursor.moveToNext()){…}
那么将跳过第一行。您能否更新您的答案,说明这将如何处理循环,因为如果我在
之前使用
myCursor.moveToFirst()
while(myCursor.moveToNext()){…}
时使用
myCursor.moveToFirst()
则将跳过第一行。