2012-01-01 6 views
2

SimpleCursorAdapterをSpinnerで使いたいです。ormlでraw sqlを使用してカーソルを取得

カーソルを返す方法が見つかりました。

しかしSpinnerには_idフィールドが必要ですが、私はidフィールドを持つオブジェクトしか持っていません。私はフィールドの名前変更を避けることを好む。

どうすればこの問題を解決できますか?私は実際にすべてのスピナーフィールドにIDを関連付ける必要があります。

私はおそらくrawsqlからカーソルを発行することができると想像しましたが、ormliteでどのように見つけられないのでしょうか?私は生のSQLとPreparedQueryを作成することができます可能性があります。

私はAndroidDatabaseオブジェクトを持っていればCursorオブジェクトを発行できますが、ormliteでAndroidDatabaseを作成するにはどうすればいいですか?

は私が

よろしく

答えて

4

すべての溶液を用いて実際に開いているまあ、私はちょうど、効率的でシンプル、そしてormliteに準拠するように思われる解決策を見つけました。

getHelper().getReadableDatabase()に設定してください。

、その後

Cursor cursor = db.query("choixpointverification", 
    new String[] { "id", "id as _id", "nom" }, 
    "masque = 0 and idPointVerification = " + idPointVerification.toString(), 
    null, null, null, "tri"); 
8

あなたは生のクエリに頼らずにQueryBuilderを使用してORMLiteから基礎となるCursorオブジェクトを取得することができます。この答えを見てみましょう:

Android Cursor with ORMLite to use in CursorAdapter

あなたは、次のコードのような何かを行うことができます:私は `SimpleCursorAdapter`ためにこのコードを使用すると、私は` StaleDataExceptionを得る

// build your query 
QueryBuilder<Foo, String> qb = fooDao.queryBuilder(); 
qb.where()...; 
// when you are done, prepare your query and build an iterator 
CloseableIterator<Foo> iterator = dao.iterator(qb.prepare()); 
try { 
    // get the raw results which can be cast under Android 
    AndroidDatabaseResults results = 
     (AndroidDatabaseResults)iterator.getRawResults(); 
    Cursor cursor = results.getRawCursor(); 
    ... 
} finally { 
    iterator.closeQuietly(); 
} 
+3

を'' iterator.closeQuietly() 'の呼び出しのためです。今のところ、私はそのラインアウトをコメントしましたが、メモリリークを引き起こす恐れがあります。 – theblang

関連する問題