Не могу получить данные из 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.
Помогите пожалуйста разобраться