Я работаю с Android Archi + Retrofit + RxAndroid в Котлине. Мне нужно обновить свой объект Data, когда вы получите ответ от сервера. Но liveata.addSource's onChanged не звонит.
Я получаю помощь от кода 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.
Ознакомьтесь с официальными документами для addSource()
MediatorLiveData , его письменного
onChanged callback будет вызван только тогда, когда активен этот MediatorLiveData.
Убедитесь, что вы loginResponse
LiveData
loginResponse
LiveData
в своем классе LifecycleOwner.