Как получить данные от Retrofit onResponse - PullRequest
0 голосов
/ 01 апреля 2020

Я хочу получить ArrayList<ItemList> из моего обратного вызова Retrofit и сохранить его как переменную ArrayList в моем классе. Другими словами, мне нужно использовать данные из retrofitList, даже когда я оставляю метод onResponse. Каков наилучший способ сделать это? Вот мой код.

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    retrofitList = new ArrayList<>();

    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl("https://b98afcf5.ngrok.io/")
            .addConverterFactory(GsonConverterFactory.create())
            .build();
    jsonPlaceHolder = retrofit.create(JsonPlaceHolder.class);

    Call<List<ItemList>> call = jsonPlaceHolder.getItemList();
    call.enqueue(new Callback<List<ItemList>>() {
        @Override
        public void onResponse(Call<List<ItemList>> call, Response<List<ItemList>> response) {
            if(!response.isSuccessful()) {
                return;
            }
            List<ItemList> listOfitems = response.body();
            for(ItemList itemList : listOfitems){
                retrofitList.add(new ItemList(itemList.getId(),
                        itemList.getName(),
                        itemList.getPhone(),
                        itemList.getIsLocated()));
            }
            //I WANT TO SAVE "retrofitList" INTO MY CLASS FROM HERE
        }

        @Override
        public void onFailure(Call<List<ItemList>> call, Throwable t) {}
    });
}

1 Ответ

0 голосов
/ 01 апреля 2020

Рекомендую сериализацию, она облегчит вашу жизнь. Попробуйте это и это . Создайте в своем классе метод, который вы будете вызывать из onResponse со своим списком. Сохраните список в некоторой переменной поля. Если вы вызываете эту переменную до того, как она будет заполнена элементами из onResponse, она не будет иметь их.

...