Глобальная переменная ArrayList, возвращающая пустое значение - PullRequest
0 голосов
/ 11 апреля 2020

У меня есть глобальный ArrayList, называемый разделами, в моем методе getMutableCountryLiveData() я обновляю этот ArrayList. Затем в setUpButton() я называю тот же ArrayList. Это должно работать как его глобальная переменная. Однако ArrayList возвращается пустым. Есть идеи, почему это так? Спасибо

Код:

public class PlannerResultsFragment extends Fragment {

    private ArrayList<Country> cities = new ArrayList<>();
    private MutableLiveData<List<List<Country>>> mutableLiveData = new MutableLiveData<>();
    private View view;
    private ArrayList<Integer> days = new ArrayList<>();
    private List<List<Country>> partitions = new ArrayList<>();

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        fragmentPlannerResultsBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_planner_results,container,false);

        view = inflater.inflate(R.layout.fragment_planner_results, container, false);

        getMutableCountryLiveData()

        setUpButton();

        return fragmentPlannerResultsBinding.getRoot();
    }

    public MutableLiveData<List<List<Country>>> getMutableCountryLiveData() {
        final TriposoAPI userDataService = RetrofitClient.getService();
        Call<InitialResponse> call = userDataService.getPlannerResults(city_input,persona_input,items_input);

        call.enqueue(new Callback<InitialResponse>() {
            @Override
            public void onResponse(Call<InitialResponse> call, Response<InitialResponse> response) {
                InitialResponse cityResponse = response.body();

                if (cityResponse != null && cityResponse.getResults() != null) {
                    cities = (ArrayList<Country>) cityResponse.getResults();

                    int partitionSize = 2;

                    for (int i=0; i < cities.size(); i += partitionSize) {
                        partitions.add(cities.subList(i, Math.min(i + partitionSize, cities.size())));
                    }

                    mutableLiveData.setValue(partitions);
                }
            }
            @Override
            public void onFailure(Call<InitialResponse> call, Throwable t) {
            }
        });
        return mutableLiveData;
    }


    public void setUpButton(){

        for (int i = 0; i < partitions.size(); i++){
            days.add(i);
        }

    }

}
...