我正在Kotlin中使用Android Archi + Retrofit + RxAndroid。从服务器获得响应时,我需要更新Data对象。但是livedata.addSource的onChanged没有调用。
我正在从Git代码获取帮助:-https://github.com/shahbazahmed1269/AndroidGithubIssues
这是我在Kotlin中的代码:-
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 reference docs的官方文档,其格式为
请确保您正在正确观察LifecycleOwner类中的loginResponse
LiveData
。