Как сделать залповый запрос асинхронным с Java Android? - PullRequest
0 голосов
/ 03 июля 2018

Здравствуйте, я пытаюсь получить список данных с помощью php api с залпом и элементом foreach, который я обнаружил, и добавил его в свой список рецептов ArrayList с помощью метода GetAll (), вот код метода:

        requestQueue = Volley.newRequestQueue(context);
        StringRequest stringRequest = new StringRequest(Request.Method.GET, 
       "http://192.168.137.1/supcookingapi/api.php?action=selectallrecipes", 
        new Response.Listener<String>() {
        @Override
        public void onResponse(String s) {

            Recettes.clear();
            String[] tableau = s.split("&nb");
            for (String r : tableau) {
                String[] data = r.split(";");
                Recettes.add(new Recette (Integer.parseInt(data[0]), data[1], data[2], java.sql.Time.valueOf(data[3]), data[4],Integer.parseInt( data[5]),Integer.parseInt(data[6]),Integer.parseInt(data[7]),Integer.parseInt(data[8]),data[9]));
            }

            /*Toast.makeText(context, "Total users : " + usersList.size(), Toast.LENGTH_SHORT).show();*/
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError volleyError) {
            Toast.makeText(context, volleyError.getMessage(), Toast.LENGTH_SHORT).show();
        }
    });
    requestQueue.add(stringRequest);

Затем я вызываю этот метод в MainActivity с помощью Recipe.GetAll (), но я хочу подождать, чтобы загрузить все элементы в списке Recettes, после чего я могу, например, загрузить свою страницу

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

Запросы залпа уже асинхронны, вам не нужно делать никаких дополнительных асинхронных операций. Просто вызовите ваш метод в вашем Activity или Fragment и делайте все, что вы хотите делать с массивом Recettes после загрузки сразу после цикла for.

0 голосов
/ 03 июля 2018

Вы можете использовать метод onPostExecute () для вызова loadPage ().

@Override
protected void onPostExecute(String result) {
    //Do Your Work
}

Метод onPostExecute () вызывается, когда AsyncTask завершает свое выполнение.

...