首页 > 解决方案 > 无法使用不同的模型进行改造

问题描述

我正在使用改造,当我使用回调方法时,改造迫使我使用相同的模型,但我的响应有不同的模型。

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());
            }
        });

当我使用上面的代码时一切都很好,但是当我在不同的活动中使用下面的代码时,我得到了使用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) {

           }
       });

这是我的错误

错误:不兼容的类型:<匿名回调<servermodel_note>> 无法转换为回调<serverModel>

问题是什么?

标签: androidretrofit2

解决方案


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

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

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

不同的响应需要不同的调用定义。在您的改造类中创建一个额外的调用定义,它返回一个Call<servermodel_note>.


推荐阅读