gpt4 book ai didi

android - LiveData.addSource onChanged 事件不调用 Android

转载 作者:太空狗 更新时间:2023-10-29 16:27:11 30 4
gpt4 key购买 nike

我正在 Kotlin 中使用 Android Archi+Retrofit+RxAndroid。从服务器获得响应时,我需要更新我的数据对象。但是 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 , 它写的

onChanged callback will be called only when this MediatorLiveData is active.

请确保您正在适本地观察 LifecycleOwner 类中的 loginResponse LiveData

关于android - LiveData.addSource onChanged 事件不调用 Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48084383/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com