【问题标题】:Android - How to sort listAndroid - 如何对列表进行排序
【发布时间】:2010-10-27 00:14:27
【问题描述】:

我有一个列表,我用数据库中的数据填充,现在我想按标题和日期对这些数据进行排序。

我对 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);
}

【问题讨论】:

  • 你提问的主题与问题本身无关?
  • 该代码中没有 if 语句
  • 这里发生了一些奇怪的事情......标题错误..改了..问题与“if”无关..问题在文中解释。

标签: sql android database list sorting


【解决方案1】:

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

【讨论】:

  • 是的,效果很好。所以我找错地方了嘿嘿。这非常有效。我所做的是将“public Cursor getAllTitles()”中查询中的最后一个“null”更改为 KEY_TITLE 或 KEY_DATA 进行排序。
  • 在客户端排序意味着服务器的工作量会减少。
  • 这是安卓系统。客户端就是服务器。
【解决方案2】:

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

应该是这样的:

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

(这个排序字符串你将作为最后一个参数放入查询方法中)

如果您将其作为原始查询执行,您将在查询末尾附加完整的 order by 语句。

如果您想了解更多详细信息,您必须向我们展示您的 DBAdapter(特别是 getAllTitles method)的内部工作原理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-16
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多