MainActivitymViewModel = ViewModelProviders.of(this).get(ListIssueViewModel.class);
mViewModel.getApiResponse().observe(this, apiResponse -> {
mAdapter.addIssues(apiResponse.getIssues());
});
mViewModel.loadIssues("square", "retrofit");
ViewModelprivate 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 не вроде ошибок т.к я его не трогал и он рабочий.