Android API应该返回JSON格式的数据,但不在布局中显示
我试图将json响应传递给适配器类,我从RESTAPI获得响应,但在改型处理程序类将json响应转换为对象数组后,json对象数组仍然没有传递给适配器类。我没有收到任何日志错误或警告,但当我尝试在我的android应用程序中使用此活动时,我没有收到任何结果Android API应该返回JSON格式的数据,但不在布局中显示,android,api,runtime-error,retrofit,Android,Api,Runtime Error,Retrofit,我试图将json响应传递给适配器类,我从RESTAPI获得响应,但在改型处理程序类将json响应转换为对象数组后,json对象数组仍然没有传递给适配器类。我没有收到任何日志错误或警告,但当我尝试在我的android应用程序中使用此活动时,我没有收到任何结果 public class HistoryActivity extends AppBaseActivity { @BindView(R.id.history_header) RelativeLayout history_hea
public class HistoryActivity extends AppBaseActivity {
@BindView(R.id.history_header)
RelativeLayout history_header;
@BindView(R.id.history_list)
ListView history_list;
@BindView(R.id.no_history_view)
LinearLayout no_history_view;
@BindView(R.id.hdr_back)
TextView hdr_back;
private String address;
private String category;
private String distance;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_history);
unbinder= ButterKnife.bind(this);
backBtnSet();
updateHeader();
Intent intent=getIntent();
if(intent!=null && intent.hasExtra("mid")){
String mId=intent.getStringExtra("mid");
address=intent.getStringExtra("address");
category=intent.getStringExtra("category");
distance=intent.getStringExtra("distance");
fetchHistory(mId);
}else {
activityFinish();
}
}
private void backBtnSet() {
final int height= (int) getResources().getDimension(R.dimen.dp_24);
hdr_back.getViewTreeObserver()
.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
Drawable img = getBaseContext().getResources().getDrawable(
R.drawable.ic_backarrow);
img.setBounds(0, 0, height,
height);
hdr_back.setCompoundDrawables(img, null, null, null);
hdr_back.getViewTreeObserver().removeOnGlobalLayoutListener(this);
}
});
}
private void updateHeader() {
TextView hView= history_header.findViewById(R.id.hdr_title);
hView.setText(getString(R.string.history_small));
}
private void fetchHistory(String mId) {
JsonObject jObject=ParamConvertor.getCustomerHistory(userInfo.getId(),
userInfo.getAccessKey(),mId);
Call<ArrayList<HistoryCustomer>> call=apiService.getCustomerHistory(jObject);
call.enqueue(new RetrofitHandlerFull<ArrayList<HistoryCustomer>>(this,
networkHandler,1));
AppLogger.printPostBodyCall(call);
}
//Problem persists from here
private INetworkHandler<ArrayList<HistoryCustomer>> networkHandler
= new INetworkHandler<ArrayList<HistoryCustomer>>() {
@Override
public void onResponse(ArrayList<HistoryCustomer> data, String msg, int num) {
if(data!=null && !data.isEmpty()){
updateList(data);
dataPresent(true);
}else{
dataPresent(false);
}
}
@Override
public void onFailure(String msg, int error) {
dataPresent(false);
}
};
private void updateList(ArrayList<HistoryCustomer> data){
HistoryAdapter adapter=new HistoryAdapter(this,data,
address,category);
history_list.setAdapter(adapter);
}
private void dataPresent(boolean isPresent){
if(isPresent){
no_history_view.setVisibility(View.GONE);
history_list.setVisibility(View.VISIBLE);
}else{
no_history_view.setVisibility(View.VISIBLE);
history_list.setVisibility(View.GONE);
}
}
@OnClick(R.id.hdr_back)
void onCLicks(View view){
switch (view.getId()){
case R.id.hdr_back:
activityFinish();
break;
}
}
}
公共类HistoryActivity扩展了AppBaseActivity{
@BindView(R.id.history\u标题)
相对显示历史_标题;
@BindView(R.id.history\U列表)
ListView历史列表;
@BindView(R.id.no\u history\u视图)
线性布局无历史视图;
@BindView(R.id.hdr\u-back)
TextView hdr_返回;
私有字符串地址;
私有字符串类别;
私有字符串距离;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_history);
解开(这个);
backBtnSet();
updateHeader();
Intent=getIntent();
if(intent!=null&&intent.hasExtra(“mid”)){
String mId=intent.getStringExtra(“mId”);
地址=intent.getStringExtra(“地址”);
类别=意图。getStringExtra(“类别”);
距离=意图。getStringExtra(“距离”);
历史(中);
}否则{
activityFinish();
}
}
私有void backBtnSet(){
最终整数高度=(int)getResources().getDimension(R.dimen.dp_24);
hdr_back.getViewTreeObserver()
.addOnGlobalLayoutListener(新的ViewTreeObserver.OnGlobalLayoutListener(){
@凌驾
公共图书馆{
可绘制img=getBaseContext().getResources().getDrawable(
R.可拉拔ic_后箭头);
img.立根(0,0,高度,
高度);
hdr_back.setCompoundDrawables(img,null,null,null);
hdr_back.getViewTreeObserver().removeOnGlobalLayoutListener(此);
}
});
}
私有void updateHeader(){
TextView hView=history\u header.findviewbyd(R.id.hdr\u title);
hView.setText(getString(R.string.history_-small));
}
私有void fetchHistory(字符串mId){
JsonObject jObject=ParamConvertor.getCustomerHistory(userInfo.getId(),
userInfo.getAccessKey(),mId);
Call Call=apiService.getCustomerHistory(jObject);
call.enqueue(新的)HandlerFull(此,
networkHandler,1);
AppLogger.printPostBodyCall(call);
}
//从这里开始,问题依然存在
专用INetworkHandler networkHandler
=新的inetworkshandler(){
@凌驾
公共void onResponse(ArrayList数据、字符串msg、int num){
if(data!=null&&!data.isEmpty()){
更新列表(数据);
数据存在(真);
}否则{
数据存在(假);
}
}
@凌驾
public void onFailure(字符串消息,int错误){
数据存在(假);
}
};
私有void updateList(ArrayList数据){
HistoryAdapter=新的HistoryAdapter(此,数据,
地址、类别);
历史记录\u列表。设置适配器(适配器);
}
私有void dataPresent(布尔值isPresent){
如果(显示){
无历史视图。设置可见性(view.GONE);
历史_list.setVisibility(View.VISIBLE);
}否则{
no_history_view.setVisibility(view.VISIBLE);
历史_list.setVisibility(View.GONE);
}
}
@OnClick(R.id.hdr\u back)
void onclick(视图){
开关(view.getId()){
案例R.id.hdr\U背面:
activityFinish();
打破
}
}
}
根据您的代码,我觉得没问题。您可以检查您正在调用的端点吗?它可能返回null或空对象