【问题标题】:Android Load data from Server and populate in SpinnerAndroid 从服务器加载数据并填充到 Spinner
【发布时间】:2017-08-23 16:06:25
【问题描述】:

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

}

请帮助我解决问题。

【问题讨论】:

  • “很遗憾,我无法从服务器获取国家/地区名称。”为什么?你的应用程序崩溃了吗?有什么问题?
  • 如果我尝试记录应用程序崩溃的名称并且我得到 java.lang.NullPointerException: println needs a message
  • 看来response.body().getName() 正在返回null。可以调试观察responseresponse.body()的内容吗?

标签: java android android-spinner


【解决方案1】:

您需要创建一个自定义适配器

你可以试试这样的

//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);    

【讨论】:

  • 我得到一个错误 foreach 不适用于 YourObject 的类型
【解决方案2】:

这是解决我问题的答案。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多