2016-04-22 2 views
2

は、私がどのように見えるSQLiteのテーブルがあります:実際にソート

CREATE TABLE MyTable 
(_id INTEGER PRIMARY KEY AUTOINCREMENT, 
    encrypted_field BLOB 
); 

このBLOBは単なるAES-256のようなJavaクラスのJSONを暗号化している:

public class MySecretClass { 
    private Date date; 
    private String message; 
} 

ので、 Androidの下にあります - 私はContentProviderを持っています。データを読み取り、 "オンザフライで"復号化し、適切なフィードを送ります。ListViewまたはRecyclerView

私は何とかプロにする必要があります見よDateによってソートし、String

私の最初の意図は、それは、レコードの変更を反映するような、私のテーブルに追加のフィールドを導入することでしたし、何とかDateStringによってソート「エミュレート」が、最終的に私が立ち往生し、それは実行不可能だことがわかりました。

その他のアイデア、回避策はありますか?

+0

あなたはCursorAdapterを使用していますか? – Blackbelt

+0

Android用のSQLCipherのような暗号化されたデータベースを使用していないのはなぜですか?その後、日付とメッセージが通常のSQLカラムにあると仮定して、これに対して通常のSQLクエリを書くことができます。 – CommonsWare

+0

1)はい、それは 'CursorAdapter'のようなものです。 2)まあ、私はSQLCipherを使うことができません - これは十分長い話ですが、このポストのbeyoundスコープについては確かです) – barmaley

答えて

1

データベースではなく、アプリケーションで並べ替えます。

はい、私はそれが最良の解決策であることに同意します。

具体的には、私はMatrixCursorを使用します。これは私のプルポッシェには理想的です。コンテンツを解読し、オブジェクトをMatrixCursorに入れると、望ましい結果が得られます。

幸い、ソート可能なコンテンツは巨大ではなく、妥当なレコード数(< 1000)のレコードあたりわずか数語です。