Вложенная реализация 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());
            });

        }
    });

Все работает как положено, но это правильный способ сделать это? Можно ли иметь вложенные наблюдаемые объекты или есть лучший способ?

0 ответов

Другие вопросы по тегам