1つのAndroidに表示する必要のあるテーブルが3つありますListView
。データを取得するには、SQLUNION
演算子を使用して、3つのテーブルすべてを「マージ」し、ViewBinderで各タイムラインアイテムを区別できるようにします。
これらのアイテムは時系列で並べ替える必要があります。これらの3つのテーブルには、共通の基本クラスがありません。
これが私が念頭に置いているSQLです:
SELECT * FROM (
SELECT id, startTime as time, username, comment, "CustomerInteraction" FROM CustomerInteraction
UNION
SELECT id, date as time, "" as username, "" as comment, "Sale" FROM Sale
UNION
SELECT id, claimDate as time, username, comment, "TravelClaim" FROM TravelClaim)
ORDER BY time DESC LIMIT 100
上記のクエリをORMLiteで表現するにはどうすればよいですか?
を使用できることはわかっていますDao.executeRaw
が、リスト全体を一度に入力したくありません。むしろ、このトリックを使用してORMLiteから基になるカーソルを取得し、それをアダプタに渡します。(遅延読み込みにより、長いリストの初期表示がはるかに高速になります。)
私が何かをすることができる方法はありDao.getPreparedQueryFromRaw(String statement)
ますか?それとももっといいQueryBuilder.union(QueryBuilder qb)
ですか?