Вопрос по sqlite, android – Сортировка данных БД и отображение в виде списка

4

Я получаю данные из моей БД, используя

cursor = db.query("WebLeadMaster", select, "condition1="+conditionVal1+
" and condition2="+ConditionVal2,null, null, null, "RegistrationTime DESC");

Я получаю данные в моем курсоре в порядке. Для отображения данных я использую следующий код:

    SimpleCursorAdapter mAdapter = new SimpleCursorAdapter(this, 
            R.layout.resultleadlookup, cursor, columns, to); 
    mAdapter.notifyDataSetChanged();
    lstResult.setAdapter(mAdapter);

Поэтому я не могу изменить содержимое курсора. Запрос на сортировку имеет условие & quot; RegistrationTime & quot; который являетсяString data type. Как вы можете видеть на изображении ниже, оно не в надлежащем порядке. (не в соответствии с датой и временем).

Какие изменения я должен внести в свой код, чтобы он правильно сортировался по дате и времени?

expected output and actual output

Если я изменю свой запрос к БД, чтобы выглядеть

cursor = db.query("WebLeadMaster", select, "condition1="+conditionVal1+
" and condition2="+ConditionVal2,null, null, null, null);

это дает восходящий порядок. Все что я хочу это по убыванию.

просто поменять станет нисходящим Tofeeq
Ваше время указано вdescending порядок, это означает, что самые высокие значения находятся наверху. Вы хотите по умолчаниюascending порядок, см. мой ответ для примеров кода. Sam
@ Сэм, хе-хе, я не заметил, что впервые прочитал этот вопрос, но вы правы, RegistrationTime отсортирован в порядке убывания ... и он пытается отсортировать данные в деск. order by id ?? (второе поле в строках) Selvin

Ваш Ответ

4   ответа
2

сохраненную как строку) в базе данных. Если вы хотите сохранить данные в формате даты по умолчанию в SQLite (ГГГГ-ММ-ДД ЧЧ: НН: СС), вы можете легко отсортировать даты.

Чтобы отобразить дату в вашем формате, вам просто нужно переформатировать дату в правильный формат.

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded Pallavi
Error: User Rate Limit Exceeded Pallavi
Error: User Rate Limit Exceeded
1

вы можете отсортировать данные по отметке времени. ORM упрощает вставку и извлечение данных из базы данных. Вы должны включить файлы JAR в свой проект, чтобы использовать ORM ...

Error: User Rate Limit Exceeded Pallavi
2

_id & quot; к этому. Установите свойство какAUTO INCREMENT к нему, и отсортировал список по_id поле.

0

сохраните тип даты как LONG / INT / NUMERIC в SQLite (время EPOCH), поэтому сортировку будет проще

затем добавьтеViewBinder вAdapter

        /*field in activity/fragment*/
        final static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //or other format that you wana to show in ListView
        ...
        mAdapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() {

            @Override
            public boolean setViewValue(View view, Cursor cursor,
                    int columnIndex) {
                final int id = view.getId();
                switch (id) {
                    case R.id.id_of_textview_with_date_data:
                        final Calendar cal = Calendar.getInstance();
                        cal.setTimeInMillis(cursor.getLong(columnIndex));
                        ((TextView) view).setText(sdf.format(cal.getTime()));
                        return true;
                }
                return false;
            }
        });

... или как указал деннис храните его как STRING / VARCHARedit: в "гггг-ММ-дд ЧЧ: мм: сс" формат

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceededbuilt-in date and time functions.
Error: User Rate Limit Exceededtype affinityError: User Rate Limit ExceededCREATE TABLE foo (created TIMESTAMP DEFAULT CURRENT_TIMESTAMP, modified TIMESTAMP NOT NULL);Error: User Rate Limit ExceededINSERT INTO foo (modified) VALUES (CURRENT_TIME);Error: User Rate Limit Exceeded
Error: User Rate Limit ExceededSQLite does not have a storage class set aside for storing dates and/or times.Error: User Rate Limit Exceededdb.update(cv)Error: User Rate Limit Exceeded

Похожие вопросы