如何解决尝试在空对象引用上调用接口方法“java.util.Iterator java.util.List.iterator()”,使用 Retrofit 在 Spinner 中获取数据
我正在尝试使用 Retrofit 从 API 获取数据并在微调器中显示,但它抛出错误“java.lang.NullPointerException: Attempt to invoke interface method 'java.util.Iterator java.util.List.iterator() ' 在空对象引用上"
下面是我的 MainActivity 类
spinnerCode = findViewById(R.id.spinner_code);
UserNumber userNumber = ApiClient.getRetrofit().create(UserNumber.class);
Call<List<CountryCodes>> call = userNumber.countryCode();
call.enqueue(new Callback<List<CountryCodes>>() {
List<CountryCodes> data=new ArrayList<>();
@Override
public void onResponse(Call<List<CountryCodes>> listCall,Response<List<CountryCodes>> response) {
data = response.body();
for(int i=0;i<data.size();i++){
String item = data.get(i).getCountry_Name();
List<String> listSpinner = new ArrayList<String>();
listSpinner.add(item);
ArrayAdapter adapter = new ArrayAdapter<String>(getApplicationContext(),android.R.layout.simple_spinner_item,listSpinner);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinnerCode.setAdapter(adapter);
}
}
@Override
public void onFailure(Call<List<CountryCodes>> call,Throwable t) {
}
});
这是我的模型响应类
public class CountryCodes {
public String Country_Name;
public String CountryCode;
public String getCountry_Name() {
return Country_Name;
}
public void setCountry_Name(String country_Name) {
Country_Name = country_Name;
}
public String getCountryCode() {
return CountryCode;
}
public void setCountryCode(String countryCode) {
CountryCode = countryCode;
}
}
这是我的接口类
@POST("List_All_Available_Countries")
Call<List<CountryCodes>> countryCode();
解决方法
您收到此错误是因为,在调用方法 data.size() 之前需要启动 List。
//So Add this line in your MainActivity
List<CountryCodes> data=new ArrayList<>();
//then add value into it.
@Override
public void onResponse(Call<List<CountryCodes>> listCall,Response<List<CountryCodes>> response) {
data = response.body();}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。