Вот несколько вещей, которые следует учитывать:
1. Проверьте свой репозиторий
Убедитесь, что ваш plantRepository.getPlant(plantId)
возвращает LiveData. Поскольку методы из репозитория выполняются в фоновом режиме, я предпочитаю инкапсулировать функцию, используя это:
liveData {
// some async process (e.g. HTTP Request)
emit(/*your value*/)
}
Ссылка: https://developer.android.com/topic/libraries/architecture/coroutines#livedata
2. Проверьте своего наблюдателя
Наблюдаете ли вы за правильным представителем владельца жизненного цикла? Если ваша ViewModel находится внутри фрагмента, убедитесь, что вы сделали следующее:
viewModel.plant.observe(viewLifecycleOwner, Observer{
// action
})
вместо:
viewModel.plant.observe(this, Observer{
// action
})
И убедитесь, что наблюдали сначала , прежде чем пытаться измените значение plantName
.
3. Начните с простого случая
Понятия не имею, как вы изменили значение plantName
. Но сначала попробуйте ввести простое жестко запрограммированное значение, например:
plantName.value = "1"
, затем проследите его через свой репозиторий, а затем - до своего наблюдателя. Надеюсь, это поможет вам.