Итак, у меня в репозитории есть такая функция:
fun getFeaturedLive() : MutableLiveData<Resource<Prod>> {
val res = MutableLiveData<Resource<Prod>>()
res.value = Resource.loading(null) //status = loading, data = null, message - null
client.request({
it.getOnlineProduct(param1, param2, param3)
},{//executes on success return from server
res.value!!.status = Status.SUCCESS
res.value!!.data = it
},{//executes on error return from server
res.value!!.status = Status.ERROR
res.value!!.message = it.message
true //error handled
})
return res
}
Возвращается res, и после этого, когда приходит ответ от сервера, выполняется функция при успешном завершении, которая изменяет данные и статус.
Теперь в моем методе onViewCreated есть что-то вроде этого:
viewmodel.prodLive.observe(this, Observer {
if (it.status == Status.ERROR) errAlert(it.message)
if( it.status == Status.SUCCESS) initList(prodList, it.data)
if (it.status == Status.LOADING) log("loading ...")
})
Сервер возвращает этот продукт, вызывается функция onsuccess и данные изменяются, но наблюдатель этого не видит. Как мне изменить код, чтобы наблюдатель реагировал на изменение данных? Я новичок в LiveData, поэтому, если у вас есть другие предложения, я рад их услышать.
Это на мой взгляд модель
var prodLive = MutableLiveData<Resource<Prod>>()
private set
fun init(){
prodLive = Rep.getFeaturedLive()
}
viewmodel.prodLive
является объектомgetFeaturedLive()
? - person Stanislav Bondar   schedule 01.03.2019