Вызвать MutableLiveData Observer без использования postValue()

Предположим, у меня есть MutableLiveData<User>. Итак, если я обновлю переменную в User, скажем, userName, используя значение, подобное

var user = MutableLiveData<User>()
user.postValue(User())
user.value.userName = "ABC"

он не будет вызывать наблюдателя. Поэтому я должен вызвать postValue, чтобы вызвать его. Есть ли возможность вызвать наблюдателя после обновления одного свойства объекта MutableLiveData.


person Ashutosh Sagar    schedule 07.08.2020    source источник
comment
Livedata работает на основе указанного вами объекта, здесь это User и на основе атрибутов пользовательского объекта   -  person Shalu T D    schedule 07.08.2020
comment
пожалуйста, проверьте это stackoverflow.com/questions/48020377 /   -  person Shalu T D    schedule 07.08.2020
comment
здесь вы обновляете свойство MutableLiveData, а не пользователя. Вы можете сделать что-то вроде user.postValue(User().apply{userName = "ABC"}) или создать экземпляр User() перед тем, как изменить свойство, а затем опубликовать его.   -  person Stachu    schedule 07.08.2020


Ответы (1)


В конце решение @Stachu работает, но я внес изменение, передав значение блока применения в postValue() следующим образом:

user.postValue(user.value.apply{ userName = "abc" }.value)
person Ashutosh Sagar    schedule 04.09.2020