Call AsyncTack from other Class and return null Android Studio

I am trying to call an AsyncTask through a method from ParseQuerys Class to use that information in a ListView of my Fragment lvRestaurantFrag. The problem is that the method returns null because the AsyncTask doesnt arrive to the onPostExecute. I dont know how I can fix it.

Here I leave my code:

JSON

API Link

[  
   {  
      "idBranchRestaurant":1,
      "idRestaurant":1,
      "restaurant":{  
         "idRestaurant":1,
         "name":"Don Julio",
         "description":"La mejor parrilla para cualquier turista",
         "socialNetwork":[  
            {  
               "idSocialNetworkRestaurant":1,
               "idRestaurant":1,
               "idTypeSocialNetwork":1,
               "value":"www.donjulio.com.ar",
               "type":{  
                  "idTypeSocialNetwork":1,
                  "name":"Website",
                  "icon":"website_ic.jpg"
               }
            }
         ]
      },
      "idRangePriceBranch":1,
      "RangePrice":{  
         "idRangePriceBranch":1,
         "idBranchRestaurant":1,
         "minimum":300,
         "maximum":600
      },
      "name":"Paraguay",
      "photo":[  
         {  
            "idBranchPhoto":4,
            "idBranchRestaurant":1,
            "branch":null,
            "idUser":0,
            "user":null,
            "photo":"entradaDonJulio.jpg"
         }
      ],
      "cuisine":[  
         {  
            "idCousine":1,
            "name":"Parrilla"
         }
      ],
      "menu":[  
         {  
            "idTypeMenu":1,
            "name":"Mediodia",
            "idBranchRestaurant":1,
            "plates":null
         },
         {  
            "idTypeMenu":2,
            "name":"Noche",
            "idBranchRestaurant":1,
            "plates":null
         }
      ],
      "filter":[  
         {  
            "idTypeFilter":2,
            "name":"Family",
            "icon":"family_ic.jpg"
         }
      ],
      "service":[  
         {  
            "idService":2,
            "name":"Comida para celiacos"
         },
         {  
            "idService":1,
            "name":"Wifi"
         }
      ],
      "timetable":[  
         {  
            "idTimetableBranch":11,
            "idBranchRestaurant":1,
            "idDay":2,
            "openingHour":"19 hs",
            "closingHour":"24 hs",
            "day":{  
               "idDay":2,
               "name":"Tuesday"
            }
         },
         {  
            "idTimetableBranch":10,
            "idBranchRestaurant":1,
            "idDay":2,
            "openingHour":"12 hs",
            "closingHour":"16 hs",
            "day":{  
               "idDay":2,
               "name":"Tuesday"
            }
         },
         {  
            "idTimetableBranch":9,
            "idBranchRestaurant":1,
            "idDay":1,
            "openingHour":"19 hs",
            "closingHour":"24 hs",
            "day":{  
               "idDay":1,
               "name":"Monday"
            }
         },
         {  
            "idTimetableBranch":8,
            "idBranchRestaurant":1,
            "idDay":1,
            "openingHour":"12 hs ",
            "closingHour":"16 hs",
            "day":{  
               "idDay":1,
               "name":"Monday"
            }
         },
         {  
            "idTimetableBranch":12,
            "idBranchRestaurant":1,
            "idDay":3,
            "openingHour":"12 hs",
            "closingHour":"16 hs",
            "day":{  
               "idDay":3,
               "name":"Wednesday"
            }
         },
         {  
            "idTimetableBranch":13,
            "idBranchRestaurant":1,
            "idDay":3,
            "openingHour":"19 hs ",
            "closingHour":"24 hs",
            "day":{  
               "idDay":3,
               "name":"Wednesday"
            }
         },
         {  
            "idTimetableBranch":14,
            "idBranchRestaurant":1,
            "idDay":4,
            "openingHour":"12 hs",
            "closingHour":"16 hs",
            "day":{  
               "idDay":4,
               "name":"Thursday"
            }
         },
         {  
            "idTimetableBranch":15,
            "idBranchRestaurant":1,
            "idDay":4,
            "openingHour":"19 hs",
            "closingHour":"24 hs",
            "day":{  
               "idDay":4,
               "name":"Thursday"
            }
         },
         {  
            "idTimetableBranch":16,
            "idBranchRestaurant":1,
            "idDay":5,
            "openingHour":"12 hs",
            "closingHour":"16 hs ",
            "day":{  
               "idDay":5,
               "name":"Friday"
            }
         },
         {  
            "idTimetableBranch":17,
            "idBranchRestaurant":1,
            "idDay":5,
            "openingHour":"19 hs ",
            "closingHour":"2 hs",
            "day":{  
               "idDay":5,
               "name":"Friday"
            }
         }
      ],
      "latitude":"87654322",
      "longitude":"23456789",
      "calification":null,
      "averageFood":4.0,
      "averageService":4.0,
      "averageAmbience":4.0,
      "averageCalification":4.0,
      "promotion":[  
         {  
            "idPromotion":3,
            "idTypePromotion":2,
            "code":"DIADELPADRE",
            "name":"Dia Del Padre Regalo",
            "startDate":"2017-06-26T00:00:00",
            "expireDate":"2017-06-18T00:00:00",
            "description":"postre de regalo",
            "value":100,
            "type":{  
               "idTypePromotion":2,
               "name":"Gift"
            }
         }
      ]
   },
   {  
      "idBranchRestaurant":2,
      "idRestaurant":2,
      "restaurant":{  
         "idRestaurant":2,
         "name":"La Hormiga",
         "description":"el lugar explota de gente y en especial de gente de ort",
         "socialNetwork":[  
            {  
               "idSocialNetworkRestaurant":2,
               "idRestaurant":2,
               "idTypeSocialNetwork":2,
               "value":"www.facebook.com/LaHormiga",
               "type":{  
                  "idTypeSocialNetwork":2,
                  "name":"Facebook",
                  "icon":"fb_ic.jpg"
               }
            }
         ]
      },
      "idRangePriceBranch":1,
      "RangePrice":{  
         "idRangePriceBranch":1,
         "idBranchRestaurant":1,
         "minimum":300,
         "maximum":600
      },
      "name":"Ort",
      "photo":[  
         {  
            "idBranchPhoto":5,
            "idBranchRestaurant":2,
            "branch":null,
            "idUser":0,
            "user":null,
            "photo":"entradaLaHormiga.jpg"
         }
      ],
      "cuisine":[  
         {  
            "idCousine":2,
            "name":"Pizza"
         }
      ],
      "menu":[  
         {  
            "idTypeMenu":3,
            "name":"Mediodia",
            "idBranchRestaurant":2,
            "plates":null
         }
      ],
      "filter":[  
         {  
            "idTypeFilter":1,
            "name":"With Discount",
            "icon":"discount_ic.jpg"
         }
      ],
      "service":[  
         {  
            "idService":3,
            "name":"Aire acondicionado"
         },
         {  
            "idService":1,
            "name":"Wifi"
         }
      ],
      "timetable":[  
         {  
            "idTimetableBranch":18,
            "idBranchRestaurant":2,
            "idDay":6,
            "openingHour":"11 hs",
            "closingHour":"15 hs",
            "day":{  
               "idDay":6,
               "name":"Saturday"
            }
         },
         {  
            "idTimetableBranch":19,
            "idBranchRestaurant":2,
            "idDay":7,
            "openingHour":"11 hs",
            "closingHour":"15 hs",
            "day":{  
               "idDay":7,
               "name":"Sunday"
            }
         }
      ],
      "latitude":"234567897",
      "longitude":"123456789",
      "calification":null,
      "averageFood":5.0,
      "averageService":5.0,
      "averageAmbience":5.0,
      "averageCalification":5.0,
      "promotion":[  

      ]
   },
   {  
      "idBranchRestaurant":3,
      "idRestaurant":3,
      "restaurant":{  
         "idRestaurant":3,
         "name":"paja rota",
         "description":"La mejor parrilla de ramos mejia",
         "socialNetwork":[  
            {  
               "idSocialNetworkRestaurant":3,
               "idRestaurant":3,
               "idTypeSocialNetwork":3,
               "value":"twitter.com/Pajarota",
               "type":{  
                  "idTypeSocialNetwork":3,
                  "name":"Twitter",
                  "icon":"ic_twitter.png"
               }
            }
         ]
      },
      "idRangePriceBranch":3,
      "RangePrice":{  
         "idRangePriceBranch":3,
         "idBranchRestaurant":3,
         "minimum":50,
         "maximum":250
      },
      "name":"Ramos MEjia",
      "photo":[  
         {  
            "idBranchPhoto":6,
            "idBranchRestaurant":3,
            "branch":null,
            "idUser":0,
            "user":null,
            "photo":"EntradaPajaRota.jpg"
         }
      ],
      "cuisine":[  
         {  
            "idCousine":1,
            "name":"Parrilla"
         }
      ],
      "menu":[  
         {  
            "idTypeMenu":4,
            "name":"Mediodia",
            "idBranchRestaurant":3,
            "plates":null
         },
         {  
            "idTypeMenu":5,
            "name":"Noche",
            "idBranchRestaurant":3,
            "plates":null
         }
      ],
      "filter":[  
         {  
            "idTypeFilter":2,
            "name":"Family",
            "icon":"family_ic.jpg"
         }
      ],
      "service":[  
         {  
            "idService":1,
            "name":"Wifi"
         },
         {  
            "idService":4,
            "name":"Carta de braille"
         }
      ],
      "timetable":[  
         {  
            "idTimetableBranch":20,
            "idBranchRestaurant":3,
            "idDay":5,
            "openingHour":"12 hs",
            "closingHour":"16 hs",
            "day":{  
               "idDay":5,
               "name":"Friday"
            }
         },
         {  
            "idTimetableBranch":21,
            "idBranchRestaurant":3,
            "idDay":5,
            "openingHour":"19 hs",
            "closingHour":"2 hs",
            "day":{  
               "idDay":5,
               "name":"Friday"
            }
         },
         {  
            "idTimetableBranch":22,
            "idBranchRestaurant":3,
            "idDay":6,
            "openingHour":"12 hs",
            "closingHour":"16 hs",
            "day":{  
               "idDay":6,
               "name":"Saturday"
            }
         },
         {  
            "idTimetableBranch":23,
            "idBranchRestaurant":3,
            "idDay":6,
            "openingHour":"19 hs",
            "closingHour":"2 hs",
            "day":{  
               "idDay":6,
               "name":"Saturday"
            }
         },
         {  
            "idTimetableBranch":24,
            "idBranchRestaurant":3,
            "idDay":7,
            "openingHour":"12 hs",
            "closingHour":"16 hs",
            "day":{  
               "idDay":7,
               "name":"Sunday"
            }
         }
      ],
      "latitude":"12345678",
      "longitude":"87654321",
      "calification":null,
      "averageFood":5.0,
      "averageService":5.0,
      "averageAmbience":5.0,
      "averageCalification":5.0,
      "promotion":[  

      ]
   },
   {  
      "idBranchRestaurant":4,
      "idRestaurant":4,
      "restaurant":{  
         "idRestaurant":4,
         "name":"la espiga",
         "description":"el mejor lugar para comer pastas",
         "socialNetwork":[  
            {  
               "idSocialNetworkRestaurant":4,
               "idRestaurant":4,
               "idTypeSocialNetwork":4,
               "value":"instagram.com/laespiga",
               "type":{  
                  "idTypeSocialNetwork":4,
                  "name":"Instagram",
                  "icon":"ic_Instagram.png"
               }
            }
         ]
      },
      "idRangePriceBranch":4,
      "RangePrice":{  
         "idRangePriceBranch":4,
         "idBranchRestaurant":4,
         "minimum":80,
         "maximum":150
      },
      "name":"Almagro",
      "photo":[  
         {  
            "idBranchPhoto":7,
            "idBranchRestaurant":4,
            "branch":null,
            "idUser":0,
            "user":null,
            "photo":"EntradaLaEspiga.jpg"
         }
      ],
      "cuisine":[  
         {  
            "idCousine":4,
            "name":"Pasta"
         }
      ],
      "menu":[  
         {  
            "idTypeMenu":6,
            "name":"Tarde",
            "idBranchRestaurant":4,
            "plates":null
         }
      ],
      "filter":[  
         {  
            "idTypeFilter":1,
            "name":"With Discount",
            "icon":"discount_ic.jpg"
         }
      ],
      "service":[  
         {  
            "idService":1,
            "name":"Wifi"
         },
         {  
            "idService":3,
            "name":"Aire acondicionado"
         }
      ],
      "timetable":[  
         {  
            "idTimetableBranch":26,
            "idBranchRestaurant":4,
            "idDay":1,
            "openingHour":"16 hs",
            "closingHour":"19 hs",
            "day":{  
               "idDay":1,
               "name":"Monday"
            }
         },
         {  
            "idTimetableBranch":27,
            "idBranchRestaurant":4,
            "idDay":2,
            "openingHour":"16 hs",
            "closingHour":"19 hs",
            "day":{  
               "idDay":2,
               "name":"Tuesday"
            }
         },
         {  
            "idTimetableBranch":28,
            "idBranchRestaurant":4,
            "idDay":3,
            "openingHour":"16 hs",
            "closingHour":"19 hs",
            "day":{  
               "idDay":3,
               "name":"Wednesday"
            }
         },
         {  
            "idTimetableBranch":29,
            "idBranchRestaurant":4,
            "idDay":4,
            "openingHour":"16 hs",
            "closingHour":"19 hs",
            "day":{  
               "idDay":4,
               "name":"Thursday"
            }
         },
         {  
            "idTimetableBranch":30,
            "idBranchRestaurant":4,
            "idDay":5,
            "openingHour":"16 hs",
            "closingHour":"19 hs",
            "day":{  
               "idDay":5,
               "name":"Friday"
            }
         }
      ],
      "latitude":"87657467",
      "longitude":"45254567",
      "calification":null,
      "averageFood":5.0,
      "averageService":5.0,
      "averageAmbience":5.0,
      "averageCalification":5.0,
      "promotion":[  

      ]
   }
]

ParseQuery Class

private String server = "http://appmorfando.azurewebsites.net/api/";
ParsingObjects parse = new ParsingObjects();

// Query for List Branches

    private ArrayList<Branch> branches = new ArrayList<Branch>();

    public ArrayList<Branch> getAllBranch(int limit, int offset){
        new BranchGetAll().execute("branch/", limit + "", offset + "");
        return branches;
    }

    private class BranchGetAll extends AsyncTask<String, Void, ArrayList<Branch>> {

        protected void onPostExecute(ArrayList<Branch> datos) {
            super.onPostExecute(datos);
            branches = datos;
        }

        @Override
        protected ArrayList<Branch> doInBackground(String... parametros) {
            String url = parametros[0] + parametros[1] + "/" + parametros[2];

            ArrayList<Branch> branchList = new ArrayList<Branch>();

            OkHttpClient client = new OkHttpClient();
            Request request = new Request.Builder()
                    .url(server + url)
                    .build();
            String resultado;
            try {
                Response response = client.newCall(request).execute();  // Llamo al API Rest servicio1 en ejemplo.com
                resultado = response.body().string();
            } catch (IOException e) {
                Log.d("Error",e.getMessage());             // Error de Network
                return null;
            }

            try{
                JSONArray jsonBranch = new JSONArray(resultado);



                for (int i = 0; i < jsonBranch.length(); i++){
                    Branch b = new Branch();
                    JSONObject obj = jsonBranch.getJSONObject(i);

                    b = parse.branch(obj);
                    //Restaurant
                    JSONObject restoObj = obj.getJSONObject("restaurant");
                    b.restaurant = parse.restaurant(restoObj);

                    //Social Network
                    JSONArray socialNetwork = restoObj.getJSONArray("socialNetwork");
                    b.restaurant.social = parse.socialNetwork(socialNetwork);

                    // Range Price
                    JSONObject rangeObj = obj.getJSONObject("RangePrice");
                    b.range = parse.rangePrice(rangeObj);

                    //Photos
                    JSONArray photo = obj.getJSONArray("photo");
                    b.photo = parse.photoBranch(photo);

                    // Cuisine
                    JSONArray cuisine = obj.getJSONArray("cuisine");
                    b.cuisine = parse.cuisine(cuisine);

                    //Menu
                    JSONArray menu = obj.getJSONArray("menu");
                    b.menu = parse.menu(menu);

                    //Filter
                    JSONArray filter = obj.getJSONArray("filter");
                    b.filter = parse.filter(filter);

                    //Service
                    JSONArray service = obj.getJSONArray("service");

                    b.service = parse.service(service);

                    //Timetable
                    JSONArray timetable = obj.getJSONArray("timetable");
                    b.timetable = parse.timetable(timetable);

                    //Promotion
                    JSONArray promotion = obj.getJSONArray("promotion");
                    b.promotion = parse.promotion(promotion);

                    branchList.add(b);
                }
                return branchList;
            }
            catch (JSONException e) {
                Log.d("error", e.getMessage());
                return null;
            }
        }

    }

lvRestaurant Fragment

 public class lvRestaurantFrag extends Fragment  implements AdapterView.OnItemClickListener{

    MainActivity main;
    ListView restaurantItems;
    lvRestaurantAdapter adapter;
    ParseQuery pq;

    ArrayList<Branch> listBranches;

    public View onCreateView(LayoutInflater inflater, ViewGroup group, Bundle data) {
        View toReturn;
        toReturn = inflater.inflate(R.layout.frag_restaurant_lv, group, false);
        main = (MainActivity)getActivity();
        pq = new ParseQuery();

        restaurantItems = (ListView) toReturn.findViewById(R.id.lvRestaurantItems);
        // Here gets null so the adapter size is 0
        listBranches = pq.getAllBranch(10,0);
        adapter = new lvRestaurantAdapter(listBranches, main);

        restaurantItems.setAdapter(adapter);
        restaurantItems.setOnItemClickListener(this);
        return toReturn;
    }

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        int idBranch = adapter.getId(position);
        main.BranchSelected(idBranch);
    }
}

2 things here:

  1. How do you know your asynctask isn’t arriving to onpostexecute? Your attached code doesn’t override onpostexecute. Let’s try implementing that method and do a simple logcat or system.out to confirm.

  2. Your asynctask is getting Json objects from server and packaging them into a list to be returned. There are loads of ways for this to fail, such as bad server connection, or incorrect parsing of json. I would carefully test your connection and data structure to make sure the null is something the asynctask causing.

One of the simplest way to test is to comment out all that connection and json related code, then return a manually populated list that you know works. This will help isolate the area that is failing.