无法使用不同的模型进行改造

Not able to use different model for Retrofit

我正在使用 retrofit,当我使用回调方法时,retrofit 强制我使用相同的模型,但我的响应有不同的模型。

WebserviceHelper.getInstancePost().getbook(10).enqueue(new Callback< serverModel>() {

            @Override
            public void onResponse(Call<serverModel> call, Response<serverModel> response) {

                data = (List<advertise_book>) response.body().getResult();
                adapter = new advertise_adapter(getActivity(), data);
                list.setLayoutManager(new LinearLayoutManager(getContext()));
                list.setAdapter(adapter);
                Log.w("response", response.message());
            }

            @Override
            public void onFailure(Call<serverModel> call, Throwable t) {
                Log.w("response", t.getMessage());
            }
        });

当我使用上面的代码时一切都很好,但是当我在不同的 activity 中使用下面的代码时,我得到了使用 serverModel 的错误servermodel_note

WebserviceHelper.getInstancePost().getnote(10).enqueue(new Callback<servermodel_note>() {

           @Override
           public void onResponse(Call<servermodel_note> call, Response<servermodel_note> response) {
               data = (List<advertise_note>) response.body().getResult();
               adapter = new note_adapter(getActivity(), data);
               list.setLayoutManager(new LinearLayoutManager(getContext()));
               list.setAdapter(adapter);
               Log.w("response", response.message());
           }
           @Override
           public void onFailure(Call<servermodel_note> call, Throwable t) {

           }
       });

这是我的错误

error: incompatible types: <anonymous Callback<servermodel_note>> cannot be converted to Callback < serverModel>

有什么问题?

对于改装调用,onResponse 回调中 CallResponse 参数的泛型由方法的 return 类型定义。

例如,下面的方法将要求将 Call<User>Response<User> 参数传递到此调用的 onResponse 回调中:

@POST("users/new")
Call<User> createUser(@Body User user);

不同的响应需要不同的调用定义。在改造 class 中创建一个额外的调用定义,return 是 Call<servermodel_note>