【问题标题】:Why code is not showing the List in the spinner that call with API?为什么代码没有在使用 API 调用的微调器中显示列表?
【发布时间】:2022-11-09 05:55:30
【问题描述】:
有一个从 API 传递的字符串数组。代码有什么问题?
我正在尝试将该值传递给微调器
Call<List<ResponseSubject>>
subjectOption=ApiClient.getInstance().getApi().subjectOption();
subjectOption.enqueue(new Callback<List<ResponseSubject>>() {
@Override
public void onResponse(Call<List<ResponseSubject>> call, Response<List<ResponseSubject>> response) {
List<ResponseSubject> responseSubject= response.body();
if(responseSubject!=null && responseSubject.size()>0) {
String[] sub = new String[responseSubject.size()];
for (int i = 0; i < responseSubject.size(); i++) {
sub[i]= Arrays.toString(responseSubject.get(i).getData());
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_spinner_dropdown_item,sub);
spin_class.setAdapter(adapter);
spin_class.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
}
}
}
@Override
public void onFailure(Call<List<ResponseSubject>> call, Throwable t) {
}
});
在上面的代码中,它正在检查来自 API 的值是否为空。在检查数据是否在数组中传递并且该数组数据被分配给微调器之后。
【问题讨论】:
标签:
java
api
retrofit
spinner
android-arrayadapter
【解决方案1】:
我认为这部分应该不在循环中:
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_spinner_dropdown_item,sub);
spin_class.setAdapter(adapter);
spin_class.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
最终代码应如下所示:
Call<List<ResponseSubject>>
subjectOption=ApiClient.getInstance().getApi().subjectOption();
subjectOption.enqueue(new Callback<List<ResponseSubject>>() {
@Override
public void onResponse(Call<List<ResponseSubject>> call, Response<List<ResponseSubject>> response) {
List<ResponseSubject> responseSubject= response.body();
if(responseSubject!=null && responseSubject.size()>0) {
String[] sub = new String[responseSubject.size()];
for (int i = 0; i < responseSubject.size(); i++) {
sub[i]= Arrays.toString(responseSubject.get(i).getData());
}
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_spinner_dropdown_item,sub);
spin_class.setAdapter(adapter);
spin_class.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
}
@Override
public void onFailure(Call<List<ResponseSubject>> call, Throwable t) {
}
});