ViewModel не вызывает наблюдателя изменяемых данных - PullRequest
0 голосов
/ 26 апреля 2020

У меня есть следующий класс ViewModel -

class VerifyOtpViewModel : ViewModel() {

    private var existingUserProfileData: MutableLiveData<TwoVerteUsers.TwoVerteUser>? = null

    fun checkInfoForAuthenticatedUser(authorization: String, user: String) {
        ProfileNetworking.getUsersProfiles(authorization, GetUserProfilesBodyModel(listOf(user)), object : ProfileNetworking.OnGetUserProfilesListener {
            override fun onSuccess(model: TwoVerteUsers) {
                existingUserProfileData?.value = model[0]
            }

            override fun onError(reason: String) {
                Log.d("existingProfile", reason)
            }
        })
    }

    fun getExistingUserProfileData(): LiveData<TwoVerteUsers.TwoVerteUser>? {
        if (existingUserProfileData == null) return null
        return existingUserProfileData as LiveData<TwoVerteUsers.TwoVerteUser>
    }
}

и следующий наблюдатель -

private fun initViewModel() {
        verifyOtpViewModel = ViewModelProvider(this).get(VerifyOtpViewModel::class.java)
        verifyOtpViewModel.getExistingUserProfileData()?.observe(this, Observer {
            if (it != null)
                Log.d("existingProfile", it.username)
        })
    }

По какой-то причине наблюдение никогда не запускается даже после того, как объект MutableLiveData получает объект значение

Пытался найти решение здесь в stackoverflow, но ничего не помогло

что мне не хватает?

1 Ответ

1 голос
/ 26 апреля 2020

рефакторинг вашего кода для этого, и вы должны быть хороши для go:

class VerifyOtpViewModel : ViewModel() {

    private val _existingUserProfileData = MutableLiveData<TwoVerteUsers.TwoVerteUser>()
    val existingUserProfileData: LiveData<TwoVerteUsers.TwoVerteUser>
        get() = _existingUserProfileData

    fun checkInfoForAuthenticatedUser(authorization: String, user: String) {
        ProfileNetworking.getUsersProfiles(
            authorization,
            GetUserProfilesBodyModel(listOf(user)),
            object : ProfileNetworking.OnGetUserProfilesListener {
                override fun onSuccess(model: TwoVerteUsers) {
                    existingUserProfileData.value = model[0]
                }

                override fun onError(reason: String) {
                    Log.d("existingProfile", reason)
                }
            })
    }
}

И наблюдения:

verifyOtpViewModel.existingUserProfileData.observe(this, Observer {
   .....
})

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...