将 JsonArrayRequest 与 setOnItemSelectedListener 结合使用

Using JsonArrayRequest with setOnItemSelectedListener

我正在尝试在片段中调用带有 spinner.setOnItemSelectedListener 的 JsonArrayRequest。但是这条线给我错误

RequestQueue requestQueue = Volley.newRequestQueue(this);

我试过了

RequestQueue requestQueue = Volley.newRequestQueue(this.getActivity);

newRequestQueue (android.content.Context) in Volley cannot be applied to (annonymous android.widget.AdapterView.OnItemSelectedListener)

但是没有用。

final Spinner type = (Spinner) rootView.findViewById(R.id.spinner);

type.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

            final int index = parent.getSelectedItemPosition();
            final String item_type = String.valueOf(index);

            JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(Request.Method.POST, ITEM_CUSTOMER_MEASUREMENTS, null,
                    new Response.Listener<JSONArray>() {
                        @Override
                        public void onResponse(JSONArray response) {

                            try {
                                JSONObject object = new JSONObject();

                                String shoulder = object.getString("shoulder");
                                String arm_hole = object.getString("arm_hole");
                                String chest_1 = object.getString("chest_1");
                                String chest_2 = object.getString("chest_2");
                                String waist = object.getString("waist");
                                String hip = object.getString("hip");
                                String slit = object.getString("slit");
                                String top_length = object.getString("top_length");
                                String f_neck = object.getString("f_neck");
                                String b_neck = object.getString("b_neck");
                                String sleeve_length = object.getString("sleeve_length");
                                String sleeve_breadth = object.getString("sleeve_breadth");
                                String sleeve_type = object.getString("sleeve_type");
                                String hip_size = object.getString("hip_size");
                                String ankle = object.getString("ankle");
                                String bottom_length = object.getString("bottom_length");
                                String knee = object.getString("knee");
                                String bottom_breadth = object.getString("bottom_breadth");
                                String thigh = object.getString("thigh");
                                String description = object.getString("description");

                                Log.d("response", "onResponse: " +shoulder +arm_hole +chest_1 +chest_2 +hip +slit +top_length +f_neck +b_neck +sleeve_length
                                        +sleeve_breadth +sleeve_type +hip_size +ankle +bottom_length +knee +bottom_breadth +thigh +description);

                                SharedPreferences sharedPreferences = getActivity().getSharedPreferences("itemDetails", Context.MODE_PRIVATE);
                                SharedPreferences.Editor editor = sharedPreferences.edit();
                                editor.putString("shoulder", shoulder);
                                editor.putString("arm_hole", arm_hole);
                                editor.putString("chest_1", chest_1);
                                editor.putString("chest_2", chest_2);
                                editor.putString("waist", waist);
                                editor.putString("hip", hip);
                                editor.putString("slit", slit);
                                editor.putString("top_length", top_length);
                                editor.putString("f_neck", f_neck);
                                editor.putString("b_neck", b_neck);
                                editor.putString("sleeve_length", sleeve_length);
                                editor.putString("sleeve_breadth", sleeve_breadth);
                                editor.putString("sleeve_type", sleeve_type);
                                editor.putString("hip_size", hip_size);
                                editor.putString("ankle", ankle);
                                editor.putString("bottom_length", bottom_length);
                                editor.putString("bottom_breadth", bottom_breadth);
                                editor.putString("knee", knee);
                                editor.putString("thigh", thigh);
                                editor.putString("description", description);
                                editor.apply();

                            } catch (JSONException e) {
                                e.printStackTrace();
                            }

                        }
                    },
                    new Response.ErrorListener() {
                        @Override
                        public void onErrorResponse(VolleyError error) {

                        }
                    }){
                @Override
                public Map<String, String> getHeaders() throws AuthFailureError {
                    Map<String,String> headers = new HashMap<>();
                    headers.put("Authorization", api_token);
                    headers.put("X-Request-ID", cust_id);
                    headers.put("X-Requested-With", item_type);
                    return headers;
                }
            };

            //Creating request queue
            RequestQueue requestQueue = Volley.newRequestQueue(this);

            //Adding request to the queue
            requestQueue.add(jsonArrayRequest);

            final SharedPreferences sharedPrefer = getActivity().getSharedPreferences("itemDetails", Context.MODE_PRIVATE);
            final String arm_hole = sharedPrefer.getString("arm_hole","");
            final String chest_1 = sharedPrefer.getString("chest_1","");
            final String chest_2 = sharedPrefer.getString("chest_2","");
            final String waist = sharedPrefer.getString("waist","");
            final String hip = sharedPrefer.getString("hip","");
            final String slit = sharedPrefer.getString("slit","");
            final String top_length = sharedPrefer.getString("top_length","");
            final String f_neck = sharedPrefer.getString("f_neck","");
            final String b_neck = sharedPrefer.getString("b_neck","");
            final String sleeve_length = sharedPrefer.getString("sleeve_length","");
            final String sleeve_breadth = sharedPrefer.getString("sleeve_breadth","");
            final String sleeve_type = sharedPrefer.getString("sleeve_type","");
            final String hip_size = sharedPrefer.getString("hip_size","");
            final String ankle = sharedPrefer.getString("ankle","");
            final String bottom_length = sharedPrefer.getString("bottom_length","");
            final String bottom_breadth = sharedPrefer.getString("bottom_breadth","");
            final String knee = sharedPrefer.getString("knee","");
            final String thigh = sharedPrefer.getString("thigh","");
            final String shoulder = sharedPrefer.getString("shoulder","");

            switch (index){
                    /*
                    * Nothing is selected
                    * */
                case 0:
                    break;
                    /*
                    * item1 is selected
                    * */
                case 1:
                    break;
                    /*
                    * item2 is selected
                    * */
                case 2:
                    break;
                    /*
                    * item3 is selected
                    * */
                case 3:
                    break;
                    /*
                    * item4 is selected
                    * */
                case 4:
                    break;
                    /*
                    * item5 is selected
                    */
                case 5:
                    break;
                    /*
                    * item6 is selected
                    * */
                case 6:
                    break;
                    /*
                    * item7 is selected
                    * */
                case 7:
                    break;
                    /*
                    * item8 is selected
                    * */
                case 8:
                    /*
                    * item9 is selected
                    * */
                    break;
            }

        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
    });

Why did this error come

如果您查看 Volley.newRequestQueue(...) 的语法,它需要一个参数 Context class。所以在你这里 android.widget.AdapterView.OnItemSelectedListener 不是 Context class (即不是从 Context 派生的)。因此,在 class android.widget.AdapterView.OnItemSelectedListener 中,您需要引用 ActivityActivity from Fragment 才能传递给方法 Volley.newRequestQueue(...).


So your code would be

RequestQueue requestQueue = Volley.newRequestQueue(ActivityClassName.this);

RequestQueue requestQueue = Volley.newRequestQueue(FragmentClassName.this.getActivity());

Better is to pass Application context as

Volley.newRequestQueue(ActivityClassName.this.getApplicationContext())Volley.newRequestQueue(FragmentClassName.this.getActivity().getApplicationContext());

你应该在 onCreateView() 方法上初始化它,

        public RequestQueue requestQueue;
        requestQueue = Volley.newRequestQueue(getActivity());