从ArrayList向spinner添加值

问题描述 投票:0回答:1

我试图在我的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);

    }

有谁能看到这个问题?谢谢

android spinner
1个回答
1
投票

您正在使用列表创建适配器,但您的列表仅在请求完成后获取项目。其中一个解决方案是在请求语句之前创建适配器:

ArrayAdapter<String> waiter_adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, listWaiters);
WaiterSpinner.setAdapter(waiter_adapter);

onResponse中,将项目添加到列表后,请调用waiter_adapter.notifyDataSetChanged()

© www.soinside.com 2019 - 2024. All rights reserved.