我在将数据插入
check_list_table
时遇到问题。 insert
方法正常执行,没有错误或警告,但是当我检查数据库时,它是空的。
Item、ItemDao 和 ViewModel 类如下所示:
@Entity(tableName = "check_list_table")
data class Item(
@PrimaryKey(autoGenerate = true)
var id: Int = 0,
var title: String,
var priority: Int=0
)
interface ItemDao {
@Insert
suspend fun insert(item: Item)
@Delete
suspend fun delete(item: Item)
@Query("SELECT * FROM check_list_table ORDER BY id DESC")
fun getAllItems():LiveData<List<Item>>
}
class DailyCheckListItemViewModel(private val itemDao: ItemDao, application: Application) :
AndroidViewModel(application) {
private val viewModelJob = Job()
private val uiScope = CoroutineScope(Dispatchers.Main + viewModelJob)
val allItems = itemDao.getAllItems().value
override fun onCleared() {
super.onCleared()
viewModelJob.cancel()
}
fun onAdd(item: Item) {
uiScope.launch {
insertItem(item)
}
}
suspend fun insertItem(item: Item) {
withContext(Dispatchers.IO) {
itemDao.insert(item)
}
}
}
insert
方法调用。insert
使用适当的 feed 调用的方法。insert
方法从非 ui 线程调用