首页 > 解决方案 > 全局 ArrayList 变量返回空

问题描述

我有一个全局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);
        }

    }

}

标签: javaandroidarraylistandroid-recyclerview

解决方案


推荐阅读