gpt4 book ai didi

android - 从 Room DB 获取单个项目。从 View 模型调用函数

转载 作者:行者123 更新时间:2023-12-02 12:51:53 25 4
gpt4 key购买 nike

所以我的一般问题是如何从 @Query 的 View 模型中调用一个函数,你必须传递一些东西然后返回一些东西。
我的简单例子:


@Query ("SELECT * FROM table_name WHERE id = :id LIMIT 1")
fun getItemById (id: Long) : MyItem

repo
fun getItemById (id: Long) : MyItem {
return itemDao.getItemById(id)
}

我知道它不能也不应该在 ui 线程上完成。对于插入和删除项目,我使用 viewModelScope 作业,但我不能(也许只是不知道如何)使用它来返回任何东西。
如果我将它作为 LiveData 到处返回,那么它就像这样工作:

查看型号
fun itemById(id: Long): LiveData<MyItem> {
return itemRepo.getItemById(id)
}

然后我在 fragment/Activity 中观察它:
viewModel.itemById(id).observe(this, Observer {
// using it
})

问题是,我真的不需要它成为可观察的实时数据。我只需要得到它一次,检查条件就可以了。
所以也许有人可以推荐如何做到这一点,而不是实时数据。还是我应该留下实时数据?

最佳答案

如果您只想获得一次更新,那么我推荐 SingleLiveEvent 而不是 LiveData。
这是google提供的类:Github link

关于如何使用它的博客:Link

SingleLiveEvent 的唯一缺点是它不能有多个观察者。

如果你不喜欢 LiveData,你可以试试 RxJava 的 Single [Observable]

关于android - 从 Room DB 获取单个项目。从 View 模型调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60063998/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com