Volley przechwytywanie response

Volley przechwytywanie response
  • Rejestracja: dni
  • Ostatnio: dni
0

Stworzyłem sobie metodę Volley'ową, która pobiera z RESTa dane. Chciałbym wykorzystać dane zwrócone przez listener ale nie wiem jak to zrobić.

KOD:

Kopiuj
 public String getAll(){
            String stringOdp="";
            JsonObjectRequest request = new JsonObjectRequest("tu_http_url", null,
                    new Response.Listener<JSONObject>() {
                        @Override
                        public void onResponse(JSONObject response) {
                            stringOdp=response.toString();  // tu błąd
                        }
                    },
                    new Response.ErrorListener() {
                        @Override
                        public void onErrorResponse(VolleyError error) {
                        }
                    }
            );
            VolleyApplication.getInstance().getRequestQueue().add(request);
            return stringOdp;
        }

gdy zmienna stringOdp jest final, w linii oznaczonej "tu błąd" pojawia się błąd, że nie można przypisać wartości do zmiennej final, gdy zmienna nie jest final, wyskakuje błąd że klasa wewnętrzna nie może przypisać zmiennej do innej niż final-więc w taki sposób się nie da zrobić. W jaki sposób to obejść? Z góry dziękuję za odpowiedzi

W0
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3759
0

Referencje typu final nie mogą być zmieniane tak, że zaczynają wskazywać na inny obiekt. Opakuj to w cokolwiek, np:

Kopiuj
public String getAll(){
            final StringBuilder result = new StringBuilder();
            JsonObjectRequest request = new JsonObjectRequest("tu_http_url", null,
                    new Response.Listener<JSONObject>() {
                        @Override
                        public void onResponse(JSONObject response) {
                            result.append(response.toString());  // tu błąd
                        }
                    },
                    new Response.ErrorListener() {
                        @Override
                        public void onErrorResponse(VolleyError error) {
                        }
                    }
            );
            VolleyApplication.getInstance().getRequestQueue().add(request);
            return result.toString();
}

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.