小编Mud*_*ddz的帖子

当 Retrofit 请求失败或成功时,如何在 Repository 和 ViewModel 类之间进行通信?

多年来,我一直在开发与MVP模式Android应用程序,但现在我正在努力学习MVVMViewModelLiveData

在下面的示例中,我不知道如何根据POSTGET请求传达失败或成功的结果Retrofit

与MVP之前,我将与使用侦听器与任何沟通主持人listener.onTodoFetched()listener.onTodoFetchError()反应,然后根据不同的哪个方法被调用。我还应该以这种方式与ViewModel班级交流吗?

获取TodoRepository.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;
}
Run Code Online (Sandbox Code Playgroud)

更新:

根据答案和进一步研究,可以使用以下方法:

  • 类之间的普通 Java 侦听器
  • RxJava
  • Kotlin 高阶函数。

android mvvm android-livedata android-viewmodel

8
推荐指数
1
解决办法
2423
查看次数