Я пытаюсь записать залп, получить запрос на получение всех пользователей моего API. Я успешно сделал это, однако, моя функция перестала работать. Если я сейчас запусту свой код и попытаюсь выбрать всех пользователей, он просто вернет пустой массив. Если я попытаюсь получить их еще раз, не останавливая запуск, он вернет мне всех пользователей.
Это моя функция:
public ArrayList<User> getAllUsers(final VolleyCallBack callBack) {
requestQueue = Volley.newRequestQueue(this);
JsonArrayRequest arrayRequest = new JsonArrayRequest(
Request.Method.GET,
"http://ecoproduce.eu/api/User",
null,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
Log.e("Rest response", response.toString());
Gson gson = new Gson();
User user = new User();
for (int i = 0; i < response.length(); i++) {
try {
user = gson.fromJson(response.getJSONObject(i).toString(), User.class);
} catch (JSONException e) {
e.printStackTrace();
}
allUsers.add(user);
}
callBack.onSuccess();
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("Error response", error.toString());
}
}
);
requestQueue.add(arrayRequest);
return allUsers;
}
Это мой интерфейс обратного вызова:
public interface VolleyCallBack {
ArrayList<User> onSuccess();
}
Вот как я называю функцию:
ArrayList<User> currentUsers;
currentUsers = getAllUsers(new VolleyCallBack() {
@Override
public ArrayList<User> onSuccess() {
Log.e("Bla", "ALL DONE!!!");
return allUsers;
}
});
Я не знаю, в чем проблема, это работало идеально, как час go, но для некоторых причина, это остановилось Это моя первая попытка написания запросов RESTful, и я не могу точно определить ошибку моего кода.
РЕШЕНИЕ:
Проблема решена путем внесения изменений, предложенных Reaz Murshed, и перемещения getAllUsers. вызов тела onCreate, если оно находится внутри функции onClick ().