Nic*_*lde 5 android dao kotlin android-room android-viewmodel
所以我的一般问题是如何从 @Query 的视图模型调用函数,您必须传递一些内容然后返回一些内容。我的简单例子:
DAO
@Query ("SELECT * FROM table_name WHERE id = :id LIMIT 1")
fun getItemById (id: Long) : MyItem
Run Code Online (Sandbox Code Playgroud)
回购协议
fun getItemById (id: Long) : MyItem {
return itemDao.getItemById(id)
}
Run Code Online (Sandbox Code Playgroud)
我知道它不能也不应该在 ui 线程上完成。为了插入和删除项目,我使用 viewModelScope 作业,但我不能(也许只是不知道如何)使用它来返回任何内容。如果我将它作为 LiveData 返回到任何地方,那么它的工作原理就像这样:
视图模型
fun itemById(id: Long): LiveData<MyItem> {
return itemRepo.getItemById(id)
}
Run Code Online (Sandbox Code Playgroud)
然后我在片段/活动中观察它:
viewModel.itemById(id).observe(this, Observer {
// using it
})
Run Code Online (Sandbox Code Playgroud)
问题是,我真的不需要它成为可观察的实时数据。我只需要拿到一次,检查一下状况就可以了。所以也许有人可以建议如何做到这一点,而不需要它是实时数据。或者我应该将其保留为实时数据?
| 归档时间: |
|
| 查看次数: |
6067 次 |
| 最近记录: |