В течение многих лет я разрабатывал Android приложений с шаблоном MVP, но сейчас я пытаюсь выучить MVVM
с ViewModel
и LiveData
. В следующем примере я не понимаю, как я могу сообщить о неудачном или успешном результате по запросу POST
или GET
с Retrofit
До этого с MVP я бы использовал Слушатель для связи докладчика с listener.onTodoFetched()
или listener.onTodoFetchError()
и затем реагирует по-разному в зависимости от того, какой метод вызывается. Должен ли я по-прежнему общаться таким образом с моим ViewModel
классом?
FetchTodoRepository. java
public MutableLiveData<String> fetchTodo() {
retrofitService.getRetrofitService().create(Endpoints.class).getTodo().enqueue(new Callback<String>() {
@Override
public void onResponse(Call<String> call, Response<String> response) {
if (response.isSuccessful() && response.body() != null) {
listener.onTodoFetched(response.body()); //ViewModel equivalent?
} else {
listener.onTodoFetchError(response.message()); //ViewModel equivalent?
}
}
@Override
public void onFailure(Call<String> call, Throwable t) {
listener.onTodoFetchError(t.getMessage()); //ViewModel equivalent?
}
});
return mutableLiveData;
}
ОБНОВЛЕНИЕ:
На основании ответов и дальнейших исследований можно использовать следующие методы:
- Простой Java слушатель между классами
- Rx Java
- Kotlin Функции высшего порядка.