Событие 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 активен.

Пожалуйста, убедитесь, что вы соблюдаете loginResponseLiveData в вашем классе LifecycleOwner соответственно.

Другие вопросы по тегам