我试图在我的Android应用程序上添加值到我的微调器下拉列表。我希望这些值来自显示用户详细信息的数据库表,我希望下拉列表显示用户的名称。
我的PHP工作正常并返回名称,但我无法弄清楚我的代码的问题。 php文件返回名称,但我无法将这些添加到微调器:
public void setUpWaiterSpinner() {
final ArrayList<String> listWaiters = new ArrayList<String>();
String url = "hidden";
StringRequest stringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONObject obj = new JSONObject(response);
JSONArray array = obj.getJSONArray("waiters");
for (int i = 0; i < array.length(); i++) {
final JSONObject orderObj = array.getJSONObject(i);
String waiterName = orderObj.getString("name");
listWaiters.add(waiterName);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(OrderConfirm.this, "Oops!" +error.toString(), Toast.LENGTH_LONG).show();
}
}){
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> params = new HashMap<>();
params.put("table", "0");
return params;
}
};
MySingleton.getInstance(this).addToRequestQueue(stringRequest);
ArrayAdapter<String> waiter_adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, listWaiters);
WaiterSpinner.setAdapter(waiter_adapter);
}
有谁能看到这个问题?谢谢
您正在使用列表创建适配器,但您的列表仅在请求完成后获取项目。其中一个解决方案是在请求语句之前创建适配器:
ArrayAdapter<String> waiter_adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, listWaiters);
WaiterSpinner.setAdapter(waiter_adapter);
在onResponse
中,将项目添加到列表后,请调用waiter_adapter.notifyDataSetChanged()