如何在Retrofit Response <list <object>&gt;中访问对象的方法?

时间:2018-02-03 00:18:13

标签: java android retrofit2

我能够实现在此实例中从对象类调用方法的目标:

@Override
            public void onResponse(Call<ServerResponse> call, retrofit2.Response<ServerResponse> response) {
                ServerResponse resp = response.body();
                if(resp.getResult().equals(Constants.SUCCESS)){
                    progress.setVisibility(View.GONE);
                    tv_message.setVisibility(View.GONE);
                    dialog.dismiss();
                    Snackbar.make(getView(), resp.getMessage(), Snackbar.LENGTH_LONG).show();
                }else {
                    progress.setVisibility(View.GONE);
                    tv_message.setVisibility(View.VISIBLE);
                    tv_message.setText(resp.getMessage());
                }
            }

但在问题实例中,响应是ServerResponse对象的List。所以当我尝试执行以下操作时:

@Override
                public void onResponse(Call<List<ServerResponse>> call, Response<List<ServerResponse>> response) {
                    List<ServerResponse> resp = response.body();
                    if(resp.getResult().equals(Constants.FAILURE)){
                        tv_noResponses.setText(resp.getMessage());
                        progressBar.setVisibility(View.INVISIBLE);
                    }else {
                        replyList = (ArrayList<ServerResponse>) response.body();
                        Collections.reverse(replyList);
                        progressBar.setVisibility(View.INVISIBLE);
                        mAdapter = new ReplyRecyclerAdapter(replyList, getActivity());
                        recyclerView.setAdapter(mAdapter);
                    }
                }

方法“getResult()”和“getMessage()”当然不能通过List界面获得,我需要做些什么才能使它们可用?

1 个答案:

答案 0 :(得分:1)

getResult()getMessage()ServerResponse类中的方法,用于根据您的偏好向您提供请求结果。

在您的第一个请求中,您希望服务器响应将其解析为ServerRespons对象。但在第二个请求中,您需要一个sth的列表。

我可以从您的代码中了解。您正在尝试检索某些内容列表(重播列表)以在RecyclerView内填充它。

您不需要getResult()getMessage()。只是做一个

List<YourModelOfRecyclerView>。如果您的请求出现问题onError()将会被调用。

您还可以修改您的JSON响应,以便使用list添加自定义服务器响应。您将不再需要ServerResponse,而是需要包含自定义响应和列表的新模型。