@Blackeyed7
Java, Android

Почему LiveData value равно null?

MainActivity
mViewModel = ViewModelProviders.of(this).get(ListIssueViewModel.class);
        mViewModel.getApiResponse().observe(this, apiResponse -> {
            mAdapter.addIssues(apiResponse.getIssues());
        });
        mViewModel.loadIssues("square", "retrofit");


ViewModel
private MediatorLiveData<ApiResponse> mApiResponse = new MediatorLiveData<>();
public void loadIssues(String user, String repo){
        mApiResponse.addSource(
                mIssueRepository.getIssues(user, repo),
                new Observer<ApiResponse>() {
                    @Override
                    public void onChanged(ApiResponse apiResponse) {
                        mApiResponse.setValue(apiResponse);
                    }
        });
    }


Код репозитория:
@Override
    public LiveData<ApiResponse> getIssues(String owner, String repo) {
        final MutableLiveData<ApiResponse> liveData = new MutableLiveData<>();
        Call<List<Issue>> call = mApiService.getIssues(owner, repo);
        call.enqueue(new Callback<List<Issue>>() {
            @Override
            public void onResponse(Call<List<Issue>> call, Response<List<Issue>> response) {
                liveData.setValue(new ApiResponse(response.body()));
            }

            @Override
            public void onFailure(Call<List<Issue>> call, Throwable t) {
                liveData.setValue(new ApiResponse(t));
            }
        });
        return liveData;
    }


Так вот, когда делаю так как вверху все работает, но вот когда меняю код ViewModel на:
private MutableLiveData<ApiResponse> mApiResponse = new MutableLiveData<>();

public void loadIssues(String user, String repo){
  LiveData<ApiResponse> livedata = mIssueRepository.getIssues(user, repo);
  mApiResponse.setValue(livedata.getValue());
}


То возвращается null, почему, это не одно и то же ??
Поменял MediatorLiveData на MutableLiveData и все сломалось. Мне кажется я не допонял тонкости работы LiveData, и вот сижу и не могу понять почему возвращается null, хотя в самом запросе к API не вроде ошибок т.к я его не трогал и он рабочий.
  • Вопрос задан
  • 222 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы