Имеется код:
public void LoadDataShop(int localityId, String parameters){
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(APIUrl.BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
APIService service = retrofit.create(APIService.class);
Call<Shops> call = service.getShopsBasket(localityId, parameters);
call.enqueue(new Callback<Shops>() {
@Override
public void onResponse(Call<Shops> call, Response<Shops> response) {
Log.e("Запуск","Запуск");
ArrayList<Shop> shopsArray = response.body().getShops();//
// Log.e("Размер",String.valueOf(shopsArray.size()));
// for(int i = 0; i<shopsArray.size();i++){
// shops.add(shopsArray.get(i));
// }
// shops.addAll(shopsArray);
}
@Override
public void onFailure(Call<Shops> call, Throwable t) {
Log.e("Ошибка",t.getMessage());
}
});
}
Он загружает список магазинов. Необходимо выполнить похожий метод для загрузки цен и только потом передать в адаптер
Проблема в том что я не могу сохранить результат. Пытался засунуть результат 1 запроса в ArrayList, который объявлен глобально во всем классе, и после выполнения этого метода отобразить элементы. Но его длина составляет 0, хотя приходит 7 объектов.
Судя по логам сначала выдает 0, потом 7, скорее всего из-за того что запрос асинхронный и сообщение срабатывает быстрее чем выполнился запрос.
Почитайте больше про CallBack
. В данном случае у вас происходит задержка. Изначально происходит создание и отображение данных, а после получение. Вам стоит либо в Activity
создавать Callback
и работать внутри onResponce
, либо сделать запрос синхронным (это неправильно, но как вариант для вас) примерно как-то так:
try {
call.execute().body()...
}catch (IOException e) {
e.printStackTrace();
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Написал простой тест (первый в моей жизни), в результате запуска падает с ошибками