4

を使用してDBからデータを取得します

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」があります。下の画像でわかるように、適切に並べ替えられた形式ではありません。(日時順ではありません)。

日時に従って正しくソートされるようにするには、コードにどのような変更を加える必要がありますか?

期待されるアウトプットと実際のアウトプット

DBクエリを変更すると、次のようになります

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

昇順になります。私が欲しいのは降順です。

4

4 に答える 4

2

さて、テーブルの構造を変更しました。別のフィールド「_id」を追加しました。プロパティを AUTOINCREMENTとして設定し、 _idフィールドに関してリストを並べ替えます。

于 2012-04-27T10:48:23.967 に答える
2

最も簡単な提案は、日付を別の形式で保存することです (ただし、文字列として保存されます)。データを SQLite のデフォルトの日付形式 (YYYY-MM-DD HH:NN:SS) で保存すると、日付を簡単に並べ替えることができます。

日付を独自の形式で表示するには、日付を正しい形式に再フォーマットするだけです。

于 2012-04-13T10:47:32.370 に答える
1

ORM を使用している場合は、タイムスタンプでデータを並べ替えることができます。ORM により、データベースからのデータの挿入と検索が容易になります。ORM を使用するには、プロジェクトに jar ファイルを含める必要があります...

于 2012-04-13T10:46:06.600 に答える
0

SQLite には日時型がないため、日付型を 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 / VARCHAR編集として保存します:「yyyy-MM-dd HH:mm:ss」形式

于 2012-04-13T11:42:02.500 に答える