В MainActivityViewModel
классе у меня есть один метод Getter, который возвращает экземпляр CurrentWeather
(класс pojo), и этот метод требует ответа от метода OnResponse
, но я получаю нулевое значение в первый раз.
первый метод вызывается из MainActivity
, viewModel
не является нулевым, но экземпляр currentWeather
имеет значение.
MainActivityViewModel viewModel = ViewModelProviders.of(this).get(MainActivityViewModel.class);
currentWeather = viewModel.getCurrentWeather();
Я не знаю, могу ли я попросить подождать секунду, прежде чем вернуть currentWeather
в первом методе или нет.
public class MainActivityViewModel extends ViewModel implements Callback<ResponseBody> {
private CurrentWeather currentWeather;
public CurrentWeather getCurrentWeather() {
if (currentWeather == null) {
createCurrentWeather("London");
}
return currentWeather;
}
public void createCurrentWeather(String city) {
RetrofitApiManager.getInstance().getCurrentWeatherApi(this, city);
}
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
if (response.isSuccessful()) {
ResponseBody body = response.body();
try {
String serverResponde = body.string();
Timber.e(serverResponde);
Gson gson = new Gson();
currentWeather = gson.fromJson(serverResponde, CurrentWeather.class);
} catch (IOException e) {
e.printStackTrace();
}
}
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
}
}