Android - 如何对列表进行排序

3

我有一个列表,里面装着从数据库中获取的数据,现在我想按标题和日期对这些数据进行排序。

由于我还是 Android 编程的新手,所以不知道该如何在这里实现,希望有人能帮助我。

以下是列表填充的代码:

    public void fillData()
{
    // get all the data from database
    DBAdapter db = new DBAdapter(this);
    db.open();

    mCategoriesCursor = db.getAllTitles();
        startManagingCursor(mCategoriesCursor);

    String[] from = new String[] { DBAdapter.KEY_TITLE, DBAdapter.KEY_DATE };
    int[] to = new int[] { R.id.text1, R.id.text2 };

    // Now create an array adapter and set it to display using our row
    SimpleCursorAdapter categories =
        new SimpleCursorAdapter(this, R.layout.categories_row, mCategoriesCursor, from, to);
    setListAdapter(categories);

    db.close();
}    

以下是 SQL 代码:

    //---retrieves all the categories---
public Cursor getAllTitles() 
{
    return db.query(DATABASE_TABLE, new String[] {
            KEY_ROWID, 
            KEY_TITLE,
            KEY_DATE,
            KEY_EXTRA}, 
            null, 
            null, 
            null, 
            null, 
            null);
}

你的问题主题与问题本身无关? - EboMike
那段代码中没有if语句。 - Falmarri
这里发生了一些奇怪的事情...标题出现错误..更改了它..问题与"if"无关..问题在文本中有解释。 - user484146
2个回答

2

最好的方法是在从数据库获取数据时进行排序。这是在创建游标时完成的(不属于您发布的代码的一部分)。查询数据库时,可以指定排序顺序。


没错,这个很好用。所以我看错地方了呵呵。这个完美地运行了。我所做的是在“public Cursor getAllTitles()”中将查询中的最后一个“null”更改为KEY_TITLE或KEY_DATA进行排序。 - user484146
在客户端进行排序将意味着服务器需要处理的工作量减少。 - BajaBob
这是Android。客户端就是服务器。 - EboMike

1

你应该在从数据库中调用数据时进行排序。为此,您需要填充用于提取此数据的任何查询方法的Sort参数。

应该像这样进行:

String sortStr = DBAdapter.KEY_TITLE + "asc, " + DBAdapter.KEY_DATE + " asc";

(这个排序字符串应该作为查询方法的最后一个参数放入)

如果您正在进行原始查询,您需要在查询的末尾附加完整的order by语句。

如果您想要更详细的信息,您需要向我们展示您的DBAdapter(特别是getAllTitles方法)的内部工作原理。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接