通常当我遍历游标时,我会使用以下内容:
while (cursor.moveToNext()) {
// get stuff from the cursor
}
What's the best way to iterate an Android Cursor?对各种选项进行了很好的讨论。但是现在我需要在光标上从最后到第一个倒退。
那我该怎么办?
答案 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());