在这种情况下,我能够实现从对象类调用方法的目标:
@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());
}
}
但在问题实例中,响应是服务器响应对象列表。 所以当我尝试执行以下操作时:
@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接口使用,我该怎么做才能使它们可用?
getResult()
和 getMessage()
是 ServerResponse
类中的方法,用于为您提供请求的结果作为您的首选项。
在第一个请求中,您希望服务器响应将其解析为 ServerRespons 对象。但在第二个请求中,您需要一个 sth 列表。
正如我从您的代码中理解的那样。 您正在尝试检索某些内容的列表(重播列表(以将其填充到RecyclerView
中。
你不需要getResult()
和getMessage()
在这里。 只需制作一个
List<YourModelOfRecyclerView>
. 如果您的请求出错onError()
将被调用。
您还可以修改 JSON 响应以使用列表添加自定义服务器响应。您将不再需要ServerResponse
而是包装自定义响应和列表的新模型。