Android - Как отсортировать список - PullRequest
3 голосов
/ 27 октября 2010

У меня есть список, который я заполняю данными из базы данных, и теперь я хочу отсортировать эти данные по названию и дате.

Я все еще новичок в программировании для 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);
}

Ответы [ 2 ]

2 голосов
/ 27 октября 2010

Лучший способ - сортировать данные по мере их поступления из базы данных.Это делается, когда вы создаете курсор (который не является частью кода, который вы разместили).Когда вы запрашиваете базу данных, вы можете указать порядок сортировки.

1 голос
/ 27 октября 2010

Скорее всего, вам следует выполнить сортировку при вызове данных из самой базы данных.Для этого вам нужно заполнить параметр Sort любого метода запроса, который вы используете для извлечения этих данных.

Он должен выглядеть примерно так:

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

(эту строку сортировки вы поместите в метод запроса в качестве последнего параметра)

Если вы делаете это как необработанный запрос, вы добавляете полный оператор order by в конце вашего запроса.

Если вы хотите получить более подробную информацию, вам придется показать нам внутреннюю работу вашего DBAdapter (в частности, getAllTitles method).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...