如何以相反的顺序迭代游标

时间:2014-10-17 08:02:15

标签: android cursor

通常当我遍历游标时,我会使用以下内容:

while (cursor.moveToNext()) {
    // get stuff from the cursor    
}

What's the best way to iterate an Android Cursor?对各种选项进行了很好的讨论。但是现在我需要在光标上从最后到第一个倒退。

那我该怎么办?

2 个答案:

答案 0 :(得分:7)

至少有两种选择。

首先,要专门回答有关向后迭代光标的问题,您可以执行以下操作:

for (cursor.moveToLast(); !cursor.isBeforeFirst(); cursor.moveToPrevious()) {
    // get stuff from the cursor 
}

其次,您可以从sql以相反的顺序填充游标,然后以正常方式迭代游标:

SQLiteDatabase db = myHelper.getWritableDatabase();
String[] columns = { MyDatabaseHelper.TEST_DATE, MyDatabaseHelper.SCORE };
String orderBy = MyDatabaseHelper.TEST_DATE + " DESC"; // This line reverses the order
Cursor cursor = db.query(MyDatabaseHelper.TESTS_TABLE_NAME, columns,
        null, null, null, null, orderBy, null);

while (cursor.moveToNext()) {
    // get stuff from the cursor
}

cursor.close();
db.close();

答案 1 :(得分:7)

你可以在最后一个位置开始光标,并使用moveToPrevious()直到你完成。

cursor.moveToLast();
do
{
    // Stuff
}
while (cursor.moveToPrevious());