Почему не добавляется элемент ArrayList внутри блока try?

Имеется следующий метод для парсинга json:

public void jsonParse() {

    String url = "https://raw.githubusercontent.com/wesleywerner/ancient-tech/02decf875616dd9692b31658d92e64a20d99f816/src/data/techs.ruleset.json";

    contentClassArrayList.add(new ContentClass("why")); // добавление элемента ArrayList для RecyclerView вне try - работает

    JsonArrayRequest request = new JsonArrayRequest(Request.Method.GET, url, null,
            new Response.Listener<JSONArray>() {
                @Override
                public void onResponse(JSONArray response) {

                    try {
                        for (int i = 0; i < response.length(); i++) {
                            JSONObject obj = response.getJSONObject(i);

                            String flags = obj.optString("flags");
                            String graphic = obj.optString("graphic");
                            String graphic_alt = obj.optString("graphic_alt");
                            String helptext = obj.optString("helptext");
                            String name = obj.optString("name");
                            String req1 = obj.optString("req1");
                            String req2 = obj.optString("req2");

                            contentClassArrayList.add(new ContentClass("why")); // добавление элемента ArrayList для RecyclerView внутри try - не работает

                            mtw.append(graphic+" "+name+" "+helptext); // добавление текста в TextView - работает
                        }
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            error.printStackTrace();
        }
    });

Использую ArrayList объектов класса как параметр для конструктора адаптера RecyclerView. В коде в виде комментариев помечено что выполняется, а что нет.

Ред. 1: При добавлении текста в TextView следующим образом данные из ArrayList получить можно:

mtw.append(contentClassArrayList.get(i).getReq2());

Однако в другом методе получить данные не получается, несмотря на то, что ArrayList объявлен в классе.


Ответы (1 шт):

Автор решения: hjvcx

Наконец, понял в чем причина. Увидев, как элементы TextView появляются у меня на глазах, я осознал, что они заполняются в процессе получения данных с парсера (метод onResponse), а RecyclerView создается еще до этого момента. Поэтому данные в ArrayList как бы есть, но до уже созданного RecyclerView они не доходят. Решением оказалось занесение установщика адаптера RecyclerView в метод onResponse после try-catch.

→ Ссылка