我能够实现在此实例中从对象类调用方法的目标:
@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界面获得,我需要做些什么才能使它们可用?
答案 0 :(得分:1)
getResult()
和getMessage()
是ServerResponse
类中的方法,用于根据您的偏好向您提供请求结果。
在您的第一个请求中,您希望服务器响应将其解析为ServerRespons对象。但在第二个请求中,您需要一个sth的列表。
我可以从您的代码中了解。您正在尝试检索某些内容列表(重播列表)以在RecyclerView
内填充它。
您不需要getResult()
和getMessage()
。只是做一个
List<YourModelOfRecyclerView>
。如果您的请求出现问题onError()
将会被调用。
您还可以修改您的JSON响应,以便使用list添加自定义服务器响应。您将不再需要ServerResponse
,而是需要包含自定义响应和列表的新模型。