使用SimpleCursorAdapter和SQLite在ListView中反转顺序

时间:2012-09-18 15:08:42

标签: android sqlite listview sql-order-by simplecursoradapter

我使用SimpleCursorAdapter从我的SQLite数据库填充ListView数据。数据很好,但最新的条目总是插在ListView的底部,我想把它放在顶部。

我已经找到了post,但我不知道如何将其导入我的项目。 目前,我的SQL查询如下所示:

public Cursor fetchAllProjects() {

  Cursor mCursor = mDb.query(SQLITE_TABLE, new String[] {KEY_ROWID,
    KEY_ROUTERIP, KEY_PROJECTNAME, KEY_URL, KEY_CALIMERO}, 
    null, null, null, null, null);

  if (mCursor != null) {
   mCursor.moveToFirst();
  }
  return mCursor;
}

如何更改以按降序查看ListView?或者我必须在SimpleCursorAdapter上更改某些内容吗?

谢谢!

3 个答案:

答案 0 :(得分:4)

要颠倒顺序,我必须像我这样在SQL Handler中更改查询!

Cursor mCursor = mDb.query(SQLITE_TABLE, new String[] {KEY_ROWID, KEY_ROUTERIP, KEY_PROJECTNAME, KEY_URL, KEY_CALIMERO}, null, null, null,  KEY_PROJECTNAME+" DESC");

答案 1 :(得分:2)

运行查询时,倒数第二个参数(目前为null)是Order By参数:https://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#query%28boolean,%20java.lang.String,%20java.lang.String%5B%5D,%20java.lang.String,%20java.lang.String%5B%5D,%20java.lang.String,%20java.lang.String,%20java.lang.String,%20java.lang.String%29

您需要选择要对其进行排序的列,然后进行更改。为了安全起见,您应该明确地按“正常”和“反向”顺序排序,以确保它是按相同列排序。

答案 2 :(得分:0)

如果您不想使用查询,可以选择以下方法:

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