Android等待Volley响应时加载视图

时间:2015-05-23 13:09:57

标签: android asynchronous android-volley

我有一个片段,显示带有远程图像的图像滑块(我使用过AndroidImageSlider库)。在OnCreateView中,我做了一个截击请求,在那里我得到了图像的网址。问题是volley是异步,并且滑块得到NUllPointerException,因为OnCreateView没有等待带有url的响应。

如何加载片段并告诉滑块等待网址?

这是一个只有一个图像的代码示例(为了简洁)。

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_apartment, container, false);

        getApartmentData(); // volley request. It set the image_url field

        // image slider
        imgSlider = (SliderLayout) view.findViewById(R.id.img_slider);
        imgSlider.stopAutoCycle();
        HashMap<String,String> url_maps = new HashMap<String, String>();
        url_maps.put("name1", image_url);

        for(String name : url_maps.keySet()){
            DefaultSliderView defaultSliderView = new DefaultSliderView(getActivity());
            defaultSliderView
                    .image(url_maps.get(name))
                    .setScaleType(BaseSliderView.ScaleType.Fit)
                    .setOnSliderClickListener(this);
            imgSlider.addSlider(defaultSliderView);
        }
        imgSlider.setPresetTransformer(SliderLayout.Transformer.Default);
        imgSlider.setPresetIndicator(SliderLayout.PresetIndicators.Center_Bottom);
        imgSlider.setDuration(4000);
        imgSlider.addOnPageChangeListener(this);
    }

1 个答案:

答案 0 :(得分:0)

我解决了将此代码放入截击请求的OnResponse中的问题:

    HashMap<String,String> url_maps = new HashMap<String, String>();
    url_maps.put("name1", image_url);

    for(String name : url_maps.keySet()){
        DefaultSliderView defaultSliderView = new DefaultSliderView(getActivity());
        defaultSliderView
                .image(url_maps.get(name))
                .setScaleType(BaseSliderView.ScaleType.Fit)
                .setOnSliderClickListener(this);
        imgSlider.addSlider(defaultSliderView);
    }