我试图更新我的列表mutableelivedata和switchMap ()问题是,即使我发布新值到LiveDataswitchMap ()从不叫。
下面是我如何更新mutableelivedataFrom my:
viewModel.getProductListingById(queryModelId)
getProductListingById ()viewModel中的实现:
fun getProductListingById(newQueryModelId: ProductListingQueryModelId) {
queryModelId.postValue(newQueryModelId)
}
下面是我如何定义queryModelId:private val queryModelId = MutableLiveData<ProductListingQueryModelId>()
最后是switchMap():
val productListingId = queryModelId.switchMap { query ->
//This log statement never called
Log.e("ProductViewModel ","id =${query.id}")
productListingRepo.getProductListingById(query.id.toInt(), query.body).cachedIn(viewModelScope)
}
最后我找到了问题,你必须确保你观察你的LiveData在你的ui中所以在我的例子中val productListingId在我的UI中添加观察者后,从来没有观察到每件事都像预期的那样工作。