尝试运行以下代码时出现编译错误:
如果我将返回类型更改为List,则代码成功完全运行,但是我想从暂停的函数中返回实时数据对象。
@Dao
interface TodoDao {
@Query("SELECT * from Todo where category_name = :category_name")
suspend fun getAllTodo(category_name : String) :LiveData<List<Todo>>
}
Compiler throws error: Not sure how to convert a Cursor to this method's return type (LiveData<List<Todo>>).
public abstract java.lang.Object getAllTodo(@org.jetbrains.annotations.NotNull()
def room_version = '2.1.0-beta01'
//Room
implementation "androidx.room:room-ktx:$room_version"
implementation "androidx.room:room-runtime:$room_version"
kapt "androidx.room:room-compiler:$room_version"
//View model
implementation 'androidx.lifecycle:lifecycle-extensions:2.1.0-beta01'
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.1.0-beta01"
api "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.2.1"
任何帮助将不胜感激。 谢谢
答案 0 :(得分:0)
您不能在会议室中使用suspend
。
您可以删除它,也可以将其与List <>一起使用,然后在ViewModel中将其添加到MutableLiveData中。
您可以通过在CoroutineScope上调用post方法来做到这一点。