_doctorSpinner = (Spinner) findViewById(R.id.input_doctor);
final ArrayList<String> docList = new ArrayList<String>();
DataUtil.getDoctorList(this.getApplicationContext(), new ServerCallBack() {
@Override
public void onSuccess(JSONObject result) {
}
@Override
public void onSuccess(String result) {
}
@Override
public void onSuccess(JSONArray result) {
ArrayList<String> list = new ArrayList<String>();
list.add("Select Doctor");
try {
for (int i = 0; i < result.length(); i++) {
list.add(result.getString(i));
}
docList.addAll(list);
} catch (JSONException e) {
}
}
});
final ArrayAdapter<String> docAdapter = new ArrayAdapter<String>(this, R.layout.support_simple_spinner_dropdown_item, docList);
docAdapter.notifyDataSetChanged();
docAdapter.setDropDownViewResource(R.layout.support_simple_spinner_dropdown_item);
_doctorSpinner.setAdapter(docAdapter);
_doctorSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
System.out.println(position);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
在上面的代码中,我从服务器中获取字符串列表并在旋转器中填充。加载活动后,我无法在列表中看到第一项("选择医生")。但是,当我单击旋转器时,我可以看到这些项目并选择。然后,选择选定的项目不视为所选的。有人可以帮我吗?
预先感谢。
_doctorSpinner = (Spinner) findViewById(R.id.input_doctor);
final ArrayList<String> docList = new ArrayList<String>();
DataUtil.getDoctorList(this.getApplicationContext(), new ServerCallBack() {
@Override
public void onSuccess(JSONObject result) {
}
@Override
public void onSuccess(String result) {
}
@Override
public void onSuccess(JSONArray result) {
ArrayList<String> list = new ArrayList<String>();
list.add("Select Doctor");
try {
for (int i = 0; i < result.length(); i++) {
list.add(result.getString(i));
}
docList.addAll(list);
final ArrayAdapter<String> docAdapter = new ArrayAdapter<String>(this, R.layout.support_simple_spinner_dropdown_item, docList);
docAdapter.notifyDataSetChanged();
docAdapter.setDropDownViewResource(R.layout.support_simple_spinner_dropdown_item);
_doctorSpinner.setAdapter(docAdapter);
_doctorSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
System.out.println(position);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
} catch (JSONException e) {
}
}
});
WebService调用在背景线程中工作,因此当您设置适配器时,您可以将列表尺寸零ialialize和setAdapter获取零,然后呼叫完成
在将数据添加到列表后调用notifyDataSetChanged();
。
@Override
public void onSuccess(JSONArray result) {
ArrayList<String> list = new ArrayList<String>();
list.add("Select Doctor");
try {
for (int i = 0; i < result.length(); i++) {
list.add(result.getString(i));
}
docList.addAll(list);
if (null != docAdapter)
docAdapter.notifyDataSetChanged();
} catch (JSONException e) {
}
}
编辑:
我不好,我读了一个问题。如果您看不到旋转器内部的文字,请尝试以下操作:
ArrayAdapter<String> docAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, docList);
我不相信您需要使用docAdapter.setDropDownViewResource(R.layout.support_simple_spinner_dropdown_item);