android - 将一项添加到数据库后,LiveData 未通知所有项
问题描述
我有一个数据库,其中存储了购物清单中的一些物品。我有两个主要活动 - 在一个活动中,我有一个带有项目状态的项目列表 - (是否保存在购物清单中)。在另一个 - 每个项目和按钮的描述,它保存或删除项目(基于条件)。如果我按下一个按钮,我的列表条件也必须改变,而且它并不总是正常工作(我实际上无法定义它在哪里工作,在哪里不工作)。我该如何解决?我的列表类在 observeForever 中侦听getAllShoppingListItemsIds()
以检测是否添加了项目。这是代码。
open class BaseViewModel(private val listDao: ShoppingListDao) : BaseViewModel() {
protected fun addItemToShoppingList(sku: Sku) {
doAsync {
listDao.addItemToShoppingList(SavedShoppingListModel(sku.code, sku.title, sku.subTitle, sku.description, sku.image, sku.validityStartDate, sku.validityEndDate, sku.offerDescription, sku.regularPrice.toString(), sku.discountPrice.toString(), Const.SHOPPING_LIST_CATALOG, 1, Date(), false))
}
}
protected fun addItemToShoppingList(savedItem: SavedShoppingListModel) {
doAsync {
listDao.addItemToShoppingList(savedItem)
}
}
protected fun removeItemFromShoppingList(id: String) {
doAsync {
listDao.deleteById(id)
}
}
protected fun getAllShoppingListItemsIds() = listDao.getAllShoppingListItemsIds()
protected fun getShoppingListItemBydId(id: String) = listDao.getShoppingListItemBydId(id)
protected fun getShoppingListItemUidBydId(id: String) = listDao.getShoppingListItemUidBydId(id)
}
解决方案
问题出observeForever
在 BaseViewModel 中。observe
如果您将在 Activity 或 Fragment 中使用(not )从 viewModel 中移动观察observeForever
,则所有通知都将起作用
推荐阅读
- flutter - 使用带有 RaisedButton onPressed() 的异步函数将对象传递给另一个路由
- javascript - ReferenceError: format is not defined 连接 Firebase 上传文件时
- javascript - React - 未处理的拒绝(TypeError):无法读取未定义的属性“城市”
- linux - 如何杀死所有正在运行的作业,然后使已停止的作业正在运行?
- python-3.x - 将环境从 Python 环境更改为 Anaconda 环境时运行代码出错
- python - plotly-dash 是否适用于 VS 代码中的 ipynb 文件
- python - 如何在熊猫中使用条件执行分组和转换计数
- ruby - 无法将服务器上的 postgres 连接到我本地的 postico
- hyperledger-fabric - 如何解决这个“make configtxgen”错误?
- ruby-on-rails - 如何修复 postgreSQL 12 中的“错误:列 t.relhasoids 不存在”?