我有一个数据库,在其中存储了购物清单中的某些商品。我有两个主要活动-在一个活动中,我有一个具有项目状态的项目清单-(是否保存在购物清单中)。在另一个中-每个项目和按钮的描述,用于保存或删除项目(根据条件)。如果按下按钮,则列表条件也必须更改,并且它并不总是可以正常工作(我实际上无法定义它在哪里起作用,在哪里不起作用)。我该如何解决?我的列表类在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)
}
答案 0 :(得分:0)
问题出在BaseViewModel中的observeForever
中。如果您使用observe
(而非observeForever
)从“活动”或“片段”中的viewModel中移出观察值,则所有通知都将起作用