从Retrofit POJO返回的空列表

问题描述 投票:-3回答:1

我尝试使用Retrofit从服务器向Spinner添加动态数据。数据出来了。但我得到了错误。 Logcat说:

致命异构:主进程:com.example.syaifulhusein.paketku,PID:31246 java.lang.NullPointerException:尝试在空对象引用上调用接口方法'int java.util.List.size()'

enter image description here

这是我的函数initSpinnerKotaAsal代码

private void initSpinnerKotaAsal() {
    loading = ProgressDialog.show(mContext, null, "harap tunggu...", true, false);

    mApiService.getProvince(API_KEY).enqueue(new Callback<Rajaongkir>() {
        @Override
        public void onResponse(Call<Rajaongkir> call, Response<Rajaongkir> response) {
            if (response.isSuccessful()) {
                loading.dismiss();
                List<ResultsItem> resultsItems = response.body().getResults();
                List<String> listSpinner = new ArrayList<String>();
                for (int i = 0; i < resultsItems.size(); i++) {
                    listSpinner.add(resultsItems.get(i).getProvince());
                }

                ArrayAdapter<String> adapter = new ArrayAdapter<String>(mContext,
                        android.R.layout.simple_spinner_item, listSpinner);
                adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                spinnerKotaAsal.setAdapter(adapter);
            }
            else {
                loading.dismiss();
                Toast.makeText(mContext, "Gagal", Toast.LENGTH_SHORT).show();
            }
        }

        @Override
        public void onFailure(Call<Rajaongkir> call, Throwable t) {

        }
    });
}

这是我的回复对象

package com.example.syaifulhusein.paketku.model;

import java.util.List;

import com.google.gson.annotations.SerializedName;

public class Rajaongkir{

@SerializedName("query")
private List<Object> query;

@SerializedName("results")
private List<ResultsItem> results;

@SerializedName("status")
private Status status;

public void setQuery(List<Object> query){
    this.query = query;
}

public List<Object> getQuery(){
    return query;
}

public void setResults(List<ResultsItem> results){
    this.results = results;
}

public List<ResultsItem> getResults(){
    return results;
}

public void setStatus(Status status){
    this.status = status;
}

public Status getStatus(){
    return status;
}

@Override
public String toString(){
    return 
        "Rajaongkir{" + 
        "query = '" + query + '\'' + 
        ",results = '" + results + '\'' + 
        ",status = '" + status + '\'' + 
        "}";
    }
}

这是我的ResultsItem.java

package com.example.syaifulhusein.paketku.model;


import com.google.gson.annotations.SerializedName;


public class ResultsItem{

@SerializedName("province")
private String province;

@SerializedName("province_id")
private String provinceId;

public void setProvince(String province){
    this.province = province;
}

public String getProvince(){
    return province;
}

public void setProvinceId(String provinceId){
    this.provinceId = provinceId;
}

public String getProvinceId(){
    return provinceId;
}

@Override
public String toString(){
    return 
        "ResultsItem{" + 
        "province = '" + province + '\'' + 
        ",province_id = '" + provinceId + '\'' + 
        "}";
    }
}
android nullpointerexception gson retrofit2
1个回答
1
投票

使用GsonFormate插件在android Studio中创建适当的Pojo模型。

© www.soinside.com 2019 - 2024. All rights reserved.