Не могу получить данные из LiveData в UI

я новичок в Андроид.
Во ViewModel использую liveData(temperature) в которую передаю данные из сервера при помощи RxJava.

class WeatherTodayViewModel(application: Application) : AndroidViewModel(application) {
    var temperature: MutableLiveData<WeatherResponse> = MutableLiveData()
    private val locationLifeDate = LocationLiveData(application)
    private val weatherRepository = WeatherRepository()
    private val compositeDisposable = CompositeDisposable()

    override fun onCleared() {
        super.onCleared()
        compositeDisposable.dispose()
    }

    fun getLocationLifeData(): LocationLiveData = locationLifeDate

    fun fetchWeatherList(lat: Double, long: Double) {
        compositeDisposable.add(
            weatherRepository.getWeatherByLocationDetails(lat, long)
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe({
                    temperature.postValue(it)
                }, {
                })
        )
    }
}

после этого во фрагменте в OnViewCreated вызываю два метода:

  • Первый вызывает fetchWeatherList из ViewModel и данные, как я думаю, с сервера передаются в LiveData temperature.
  • После этого вызывается второй метод который передает данные из temperature в textView. вот эти два метода
private fun requestLocationUpdates() {
    viewModel.getLocationLifeData().observe(viewLifecycleOwner, {
        viewModel.fetchWeatherList(it.lat.toDouble(), it.long.toDouble()).toString()
    })
}

private fun getTemperatureDetails() {
    viewModel.temperature.observe(viewLifecycleOwner, {
        fragmentWeatherTodayBinding.tvTemperature.text = it.main.temp.toString()
    })
}

Но вся беда в том, что я не получаю данные в textView.
Возможно я неверно передаю данные в методе fetchWeatherList.

Помогите пожалуйста разобраться


Ответы (1 шт):

Автор решения: Kalinin

Это рабочий код. Ошибка была в дата классе WeatherResponse

→ Ссылка