Volley - zapisywanie listy obiektów z metody onResponse ( GET Request )

0

Cześć. Posiadam metodę do wyciągania danych z mojego REST Api, która działą fajnie - łączy się z API i wyciąga dane. Jednak jakakolwiek próba zapisania tych danych kończy się fiaskiem

    private void extractCities(){
        RequestQueue queue = Volley.newRequestQueue(this);
        JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(Request.Method.GET, JSON_URL, null, new Response.Listener<JSONArray>() {
            @Override
            public void onResponse(JSONArray response) {
                for (int i = 0; i < response.length(); i++) {
                    try {
                        JSONObject songObject = response.getJSONObject(i);
                        City city = new City();
                        city.setId(songObject.getInt("id"));
                        city.setCityName(songObject.getString("cityName"));
                        city.setBusStopName(songObject.getString("busStopName"));

                        listOfCities.add(city);

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

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

            }
        });
        queue.add(jsonArrayRequest);
    }

Obiekty typu City elegancko dodają się do listy listOfCities, jednak kiedy wychodzę z metody i chcę normalnie operować na tej liście jest ona pusta. Próbowałem na wiele sposobów, między innymi przypisać ją do jakiejś innej, publicznej statycznej listy - nic, próbowałem interfejsu którym próbowałem zapisać listę - nic. Próbowałem za każdym wyciągniętym z JSON'a obiektem wrzucać go do metody typu addCityToList - nic. Po wyjściu z metody onResponse wszystkie listy są puste, nie jestem w żaden sposób przechwycić tych danych, by nadal spokojnie sobie na nich później pracować.

Pomocy... przeszukałem pół internetu, nic na ten temat

0

Problem rozwiązany - w metodzie można wrzucić listę do SharedPreferences, którą później można bez probemu wyciągnąć

0

Jeśli mógłbym Ci dać radę użyj Retrofita oraz GSONa. Będziesz mieć zdecydowanie mniej linii kodu. https://square.github.io/retrofit/

0

Dobra, problem jednak nie rozwiazany. Aplikacja wlaczana poraz pierwszy nie wczytuje prawidlowo listy z SharedPreferences. Dopiero wczytanie apki poraz drugi pozwala odczytac liste.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0