Вложенная реализация LivaData
Я изучаю, как работают компоненты архитектуры Android. Для этого я пытаюсь создать приложение погоды. Я хочу получить местоположение от устройства и после этого выбрать погоду в этом месте.
Для этого я использую два объекта LiveData, один для определения местоположения, а другой для прогноза погоды. После получения обновления местоположения я устанавливаю другого наблюдателя погоды внутри наблюдателя LiveData местоположения. Вот код для того же:
LiveData<LocationData> locationDataLiveData = LocationService.getLocation(MainActivity.this);
locationDataLiveData.observe(this, location -> {
if (location != null) {
WeatherViewModelFactory factory = new WeatherViewModelFactory(location.getLatitude(),
location.getLongitude());
WeatherViewModel viewModel = ViewModelProviders.of(mainActivity, factory).get(WeatherViewModel.class);
viewModel.loadCurrentWeather().observe(MainActivity.this, currentWeather -> {
temp.setText(currentWeather.getCountry() + " " + currentWeather.getTemp());
});
}
});
Все работает как положено, но это правильный способ сделать это? Можно ли иметь вложенные наблюдаемые объекты или есть лучший способ?