Событие LiveData.addSource onChanged не вызывает Android
Я работаю с Android Archi+Retrofit+RxAndroid в Котлине. Мне нужно обновить мой объект данных при получении ответа от сервера. Но onChanged жилой.addSource не вызывает.
Я получаю помощь от кода Git: - https://github.com/shahbazahmed1269/AndroidGithubIssues
Вот мой код в Котлине: -
class LoginRepository : BaseRepository() {
fun callLoginApi(data: HashMap<String, String>): LiveData<LoginResponse> {
val liveData: MutableLiveData<LoginResponse> = MutableLiveData<LoginResponse>()
// val call = mApiService.getLoginUser(data)
mApiService.getLoginUser(data)
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
{ user ->
liveData.value = user
Log.e("response", user.toString())
},
{ error ->
liveData.value = LoginResponse(error = error.localizedMessage)
Log.e("Error", error.message)
})
return liveData
}
}
open class LoginViewModel : ViewModel() {
lateinit var loginResponse : MediatorLiveData<LoginResponse>
lateinit var loginRepo:LoginRepository;
init {
loginResponse = MediatorLiveData<LoginResponse>()
loginRepo = LoginRepository()
}
fun callLoginApi(data: HashMap<String, String>) {
// val loginResponse = MediatorLiveData<LoginResponse>()
loginResponse.addSource(
loginRepo.callLoginApi(data),
{ loginResponse -> Log.e("Response model",loginResponse.toString()) }
)
}
}
Мой ответ из LoginRepository печатает, но не из класса ViewModel.
1 ответ
Решение
Проверьте официальные документы для addSource()
метод MediatorLiveData справочной документации, его написано
Обратный вызов onChanged будет вызываться только тогда, когда этот MediatorLiveData активен.
Пожалуйста, убедитесь, что вы соблюдаете loginResponse
LiveData
в вашем классе LifecycleOwner соответственно.