Android从服务器加载数据并填充在Spinner中

时间:2017-08-22 21:16:27

标签: java android android-spinner

我有一个从服务器加载所有国家/地区的方法。在服务器响应中,我需要获取服务器上所有国家/地区的名称,并将其填充到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;
}

}

请帮我解决问题。

2 个答案:

答案 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);