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);

所以,我不能修改游标的内容。排序查询具有条件“RegistrationTime”,它是一个字符串数据类型。如下图所示,它的排序格式不正确。(不根据日期时间)。

我应该在我的代码中进行哪些更改,以便它可以根据日期时间正确排序?

预期产出和实际产出

如果我改变我的数据库查询,看起来像

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

它给出了一个升序。我只想要它的降序。

4

4 回答 4

2

最简单的建议是以不同的格式(但仍保存为字符串)将日期保存到数据库中。如果您将数据保存为 SQLite 的默认日期格式(YYYY-MM-DD HH:NN:SS),您可以轻松地对日期进行排序。

要以您的格式显示日期,您只需将日期重新格式化为正确的格式。

于 2012-04-13T10:47:32.370 回答
2

好吧,我改变了我的表结构。我向其中添加了另一个字段“_id”。将属性设置为 AUTO INCREMENT,并根据_id字段对列表进行排序。

于 2012-04-27T10:48:23.967 回答
1

如果您使用 ORM,则可以按时间戳对数据进行排序。ORM 使从数据库中的数据插入和数据检索更容易。您必须在项目中包含 jar 文件才能使用 ORM ...

于 2012-04-13T10:46:06.600 回答
0

由于 SQLite 没有日期时间类型,将日期类型存储为 SQLite(EPOCH 时间)中的 LONG/INT/NUMERIC 会更容易排序

然后添加ViewBinderAdapter

        /*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;
            }
        });

...或作为 dennisg 指出将其存储为 STRING/VARCHAR编辑:以“yyyy-MM-dd HH:mm:ss”格式

于 2012-04-13T11:42:02.500 回答