0

I got a function where Im making an arrayrequest with the purpose to get the quantity of the registers from de callback; but, Im trying to return that number for the function.

I´m declaring a variable that gets the lenght or size of the temporal ArrayList, which it´s filled whith the response of the api request using the volley library.

public int Contar(int position){
        final int[] Cant = new int[1];
        ArrayList<Entidad_Decision> listaO = new ArrayList<>();
        if (position == 0){
            RequestQueue requestQueue = Volley.newRequestQueue(mContext.getApplicationContext());
            JsonArrayRequest arrayRequest = new JsonArrayRequest(Request.Method.GET, "http:My Api IP", null,
                    new Response.Listener<JSONArray>() {
                        @SuppressLint("SetTextI18n")
                        @Override
                        public void onResponse(JSONArray jsonArray) {
                            try {
                                for (int i = 0; i < jsonArray.length(); i++) {
                                    JSONObject jsonObject = jsonArray.getJSONObject(i);
                                    String numero_de_decision = jsonObject.getString("NUMERO_DE_DECISION");
                                    listaO.add(new Entidad_Decision(numero_de_decision,"","responsables","fecha" + " - " + "plazo", "observaciones", "procede", "status"));
                                }
                                //buscar.setText(listaO.size() + "");
                                Cant[0] = listaO.size();
                            } catch (JSONException e) {
                                e.printStackTrace();
                            }
                        }
                    }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    error.printStackTrace();
                }
            });

            arrayRequest.setRetryPolicy(new DefaultRetryPolicy(MY_DEFAULT_TIMEOUT4,
                    DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
                    DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));

            requestQueue.add(arrayRequest);
        }else if (position == 1){
            RequestQueue requestQueue = Volley.newRequestQueue(mContext.getApplicationContext());
            JsonArrayRequest arrayRequest = new JsonArrayRequest(Request.Method.GET, "http:My API IP", null,
                    new Response.Listener<JSONArray>() {
                        @SuppressLint("SetTextI18n")
                        @Override
                        public void onResponse(JSONArray jsonArray) {
                            try {
                                for (int i = 0; i < jsonArray.length(); i++) {
                                    JSONObject jsonObject = jsonArray.getJSONObject(i);
                                    String numero_de_decision = jsonObject.getString("NUMERO_DE_DECISION");
                                    listaO.add(new Entidad_Decision(numero_de_decision,"","responsables","fecha" + " - " + "plazo", "observaciones", "procede", "status"));
                                }
                                //buscar.setText(listaO.size() + "");
                                Cant[0] = listaO.size();
                            } catch (JSONException e) {
                                e.printStackTrace();
                            }
                        }
                    }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    error.printStackTrace();
                }
            });

            arrayRequest.setRetryPolicy(new DefaultRetryPolicy(MY_DEFAULT_TIMEOUT,
                    DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
                    DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));

            requestQueue.add(arrayRequest);
        }
        return Cant[0];
    }

When I´m calling that variable, the value is 0. How can I solve this??

0 Answers0