我有一个从服务器加载所有国家/地区的方法。在服务器响应中,我需要获取服务器上所有国家/地区的名称,并将其填充到Spinner中。不幸的是,我无法从服务器获取国家/地区名称。这是我的代码:
public void loadCountry() {
mAPIService.loadCountry().enqueue(new Callback<Country>(){
@Override
public void onResponse(Response<Country> response, Retrofit retrofit) {
String name = response.body().getName();
Log.i("countryName", name);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(AddLocation.this,
android.R.layout.simple_spinner_item, response.body().getName().indexOf(1));
countrySpinner.setAdapter(adapter);
}
@Override
public void onFailure(Throwable t) {
}
});
}
这是我的模型类: 公共等级国家{
@SerializedName("id")
@Expose
private Integer id;
@SerializedName("name")
@Expose
private String name;
@SerializedName("pager")
@Expose
private Pager pager;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Pager getPager() {
return pager;
}
public void setPager(Pager pager) {
this.pager = pager;
}
}
请帮我解决问题。
答案 0 :(得分:0)
您需要创建自定义适配器
或
你可以尝试这样的事情
//assuming response.body() is an array or list
String[] names = new String[sizeOfYourArrayOrList];
int i = 0;
for(YourObject o : response.body()){
names[i] = o.getName(); //get the name of the country
i++;
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(AddLocation.this,
android.R.layout.simple_spinner_item, names);
countrySpinner.setAdapter(adapter);
答案 1 :(得分:0)
这是解决我问题的答案。
String[] names = new String[response.body().getData().size()];
int i = 0;
for(Datum o : response.body().getData()){
names[i] = o.getName(); //get the name of the country
i++;
}
Log.i("country", name);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(AddLocation.this,
android.R.layout.simple_spinner_item, names);
countrySpinner.setAdapter(adapter);