web-dev-qa-db-ja.com

コルーチンフロー:カーソルをこのメソッドの戻り型に変換する方法がわからない

私がDAOを新しいFlowapiに変更しようとしているとき、私はそれを述べるコンパイルエラーを得ています

Not sure how to convert a Cursor to this method's return type
    public abstract kotlinx.coroutines.flow.Flow<Java.util.List<com.ezek.ezign.model.ECampaign>> readCampaigns();
 _

DAOのISです

@Dao
interface CampaignDao {

    @Query("SELECT * FROM campaign ORDER BY timeStamp ASC")
    fun readCampaigns(): Flow<List<ECampaign>>

    @Query("SELECT * FROM campaign WHERE id = :campaignId")
    fun readCampaign(campaignId: Int): Flow<ECampaign>
}
 _

そして依存関係はあります

    implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.2'

    implementation "Android.Arch.persistence.room:runtime:$rootProject.ext.room_version"
    kapt "Android.Arch.persistence.room:compiler:$rootProject.ext.room_version"

//room_version = "2.1.0"
 _

私はListArrayListの両方で試してみましたが、運がありません。

前もって感謝します。

12
noobEinstien

__some_variable____関数を持つFlowLiveDataDAOを回避するアプローチを試してみましたが、suspend関数が存在していますが、まだエラーが発生していました。

最後に、私の問題は私の依存関係に関連していました。私は次のような複数の部屋の依存関係を持っていました:

    def room_version = "2.2.5"
    implementation "androidx.room:room-runtime:$room_version"
    kapt           "Android.Arch.persistence.room:compiler:1.1.1"
    implementation "androidx.room:room-ktx:$room_version"

 _

最後のものだけが必要な場合(編集を参照)。

    implementation "androidx.room:room-ktx:2.2.5"
 _

[〜#〜]編集[〜#〜]

実際には、これはイベントではありません。それは罰金をまとめたが、私がアプリを起動したとき、私は実行時にエラーが発生しました。

コンパイラのバージョンを交換することでうまくいくことができます。

    def room_version = "2.2.5"
    implementation "androidx.room:room-runtime:$room_version"
    kapt           "androidx.room:room-compiler:$room_version"
    implementation "androidx.room:room-ktx:$room_version"
 _
0
David