Запрос залпа не выполняется и данные не получены - PullRequest
0 голосов
/ 07 марта 2020

У меня есть простой URL, который выбирает некоторые фотографии с сайта pixabay. с этим URL: https://pixabay.com/api/?key=15507399-305bf88eb0892f7cdf58fb66b&image_type=photo&pretty=true&q=yellow+flowers. При нажатии на ссылку отображается ответ JSON. Я хочу получить "id" и "largeImageURL". но метод даже не выполняется. Arraylist, который должен содержать значения, всегда имеет размер = 0. Я добавил <uses-permission android:name="android.permission.INTERNET"/> Я понятия не имею, что мне здесь не хватает

 requestQueue = Volley.newRequestQueue(this);
    loadImages();

    //testing
    String[] names = null;
    for (int i = 0; i < images.size(); i++) {
        names[i] = images.get(i).getId();
    }
}

private void loadImages() {
    String url = "https://pixabay.com/api/?key=15507399-305bf88eb0892f7cdf58fb66b&image_type=photo&pretty=true&q=yellow+flowers";
    JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject response) {
            try {
                JSONArray hits = response.getJSONArray("hits");
                for (int i = 0; i < hits.length(); i++) {
                    JSONObject pics = hits.getJSONObject(i);
                    images.add(new Flowers(pics.getString("id"), pics.getString("largeImageURL")));
                }
            } catch (Exception e) {
                e.printStackTrace();
                Toast.makeText(MainActivity.this, "ha", Toast.LENGTH_SHORT).show();
            }
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Log.e("test", "Error", error);
        }
    });
    requestQueue.add(request);
}

1 Ответ

0 голосов
/ 07 марта 2020

Ваш код работает, за исключением того, что размещение блока кодов «// testing» находится в неправильном месте, что приводит к размеру = 0. Требуется время для поступления данных, прежде чем «onResponse ()» сработает и сохраняет данные в «изображениях». Но вы уже обращаетесь к «images» до «onResponse ()».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...