Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用AsyncTask在带有jsonData的daimajia AndroidImageSlider中加载两个以上的图像_Android_Json_Android Asynctask - Fatal编程技术网

使用AsyncTask在带有jsonData的daimajia AndroidImageSlider中加载两个以上的图像

使用AsyncTask在带有jsonData的daimajia AndroidImageSlider中加载两个以上的图像,android,json,android-asynctask,Android,Json,Android Asynctask,我正在使用with slider从Json数据加载三幅图像。下面是我在异步任务中尝试的内容: public class AsyncHttpTask extends AsyncTask<String, Void, Integer> { public ProgressDialog pDialog; @Override protected void onPreExecute() { super.onPreExecute

我正在使用with slider从
Json数据加载三幅图像。下面是我在
异步任务中尝试的内容:

public class AsyncHttpTask extends AsyncTask<String, Void, Integer> {
        public ProgressDialog pDialog;
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(MainActivity.this);
            pDialog.setIndeterminate(false);
            pDialog.setMessage("Loading, Please wait...");
            pDialog.setCancelable(true);
            pDialog.show();
        }

        @Override
        protected Integer doInBackground(String... params) {
            Integer result = 0;
            HttpURLConnection urlConnection;

            try {
                /* forming th java.net.URL object */
                URL url = new URL(params[0]);

                urlConnection = (HttpURLConnection) url.openConnection();

                /* for Get request */
                urlConnection.setRequestMethod("GET");

                int statusCode = urlConnection.getResponseCode();

                /* 200 represents HTTP OK */
                if (statusCode ==  200) {

                    BufferedReader r = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
                    StringBuilder response = new StringBuilder();
                    String line;
                    while ((line = r.readLine()) != null) {
                        response.append(line);
                    }

                    parseResult(response.toString());

                    result = 1;

                }else{

                    result = 0; //"Failed to fetch data!";

                }

            } catch (Exception e) {
                Toast.makeText(MainActivity.this, e.getLocalizedMessage(), Toast.LENGTH_SHORT).show();
            }

            return result; //"Failed to fetch data!";
        }

        @Override
        protected void onPostExecute(Integer result) {

            /* Download complete. Lets update UI */
            if (result == 1) {
                adapter = new MyRecyclerAdapter(MainActivity.this, feedItemList);
                mmRecyclerView.setAdapter(adapter);
                pDialog.dismiss();
            } else {
                Toast.makeText(MainActivity.this, "Failed to fetch data!", Toast.LENGTH_SHORT).show();

            }
        }
    }
"Main-header": [
    {

    "HeaderImg1": "http://url/Main1.jpg",
    "Title": "title 1"
    },
    {
    "HeaderImg2": "http://url/Main2.jpg",
    "Title": "title 2"
    },
    {
    "HeaderImg3": "http://url/Main2.jpg",
    "Title": "title 3"
    }
  ]
因此,我的
JsonData
中有三个图像:

public class AsyncHttpTask extends AsyncTask<String, Void, Integer> {
        public ProgressDialog pDialog;
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(MainActivity.this);
            pDialog.setIndeterminate(false);
            pDialog.setMessage("Loading, Please wait...");
            pDialog.setCancelable(true);
            pDialog.show();
        }

        @Override
        protected Integer doInBackground(String... params) {
            Integer result = 0;
            HttpURLConnection urlConnection;

            try {
                /* forming th java.net.URL object */
                URL url = new URL(params[0]);

                urlConnection = (HttpURLConnection) url.openConnection();

                /* for Get request */
                urlConnection.setRequestMethod("GET");

                int statusCode = urlConnection.getResponseCode();

                /* 200 represents HTTP OK */
                if (statusCode ==  200) {

                    BufferedReader r = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
                    StringBuilder response = new StringBuilder();
                    String line;
                    while ((line = r.readLine()) != null) {
                        response.append(line);
                    }

                    parseResult(response.toString());

                    result = 1;

                }else{

                    result = 0; //"Failed to fetch data!";

                }

            } catch (Exception e) {
                Toast.makeText(MainActivity.this, e.getLocalizedMessage(), Toast.LENGTH_SHORT).show();
            }

            return result; //"Failed to fetch data!";
        }

        @Override
        protected void onPostExecute(Integer result) {

            /* Download complete. Lets update UI */
            if (result == 1) {
                adapter = new MyRecyclerAdapter(MainActivity.this, feedItemList);
                mmRecyclerView.setAdapter(adapter);
                pDialog.dismiss();
            } else {
                Toast.makeText(MainActivity.this, "Failed to fetch data!", Toast.LENGTH_SHORT).show();

            }
        }
    }
"Main-header": [
    {

    "HeaderImg1": "http://url/Main1.jpg",
    "Title": "title 1"
    },
    {
    "HeaderImg2": "http://url/Main2.jpg",
    "Title": "title 2"
    },
    {
    "HeaderImg3": "http://url/Main2.jpg",
    "Title": "title 3"
    }
  ]
//我的JsonData没有任何问题但是

我可以做些什么来在这个滑块中显示这三个图像,如上所述
JsonData

编辑:以下是我在Oncreate上使用此工具所做的工作,该工具运行良好,但我需要从加载的Json数据中获取:

mDemoSlider = (SliderLayout) findViewById(R.id.slider);
        HashMap<String, String> url_maps = new HashMap<>();
        url_maps.put("title1", "http://url/pic1.jpg");
        url_maps.put("title2", "http://url/pic3.jpg");
        url_maps.put("title3", "http://url/pic3.jpg");
        for (String name : url_maps.keySet()) {
            TextSliderView textSliderView = new TextSliderView(this);
            // initialize a SliderLayout
            textSliderView
                    .description(name)
                    .image(url_maps.get(name))
                    .setScaleType(BaseSliderView.ScaleType.Fit);
            //add your extra information
            textSliderView.bundle(new Bundle());
            textSliderView.getBundle()
                    .putString("extra", name);
            mDemoSlider.addSlider(textSliderView);
        }
        mDemoSlider.setPresetTransformer(SliderLayout.Transformer.Accordion);
        mDemoSlider.setPresetIndicator(SliderLayout.PresetIndicators.Right_Bottom);
        mDemoSlider.setCustomAnimation(new DescriptionAnimation());
        mDemoSlider.setDuration(6000);
mDemoSlider=(SliderLayout)findViewById(R.id.slider);
HashMap url_maps=新建HashMap();
url_maps.put(“标题1”http://url/pic1.jpg");
url_maps.put(“标题2”http://url/pic3.jpg");
url_maps.put(“标题3”http://url/pic3.jpg");
for(字符串名称:url\u maps.keySet()){
TextSliderView TextSliderView=新的TextSliderView(此);
//初始化幻灯片布局
文本幻灯片视图
.说明(姓名)
.image(url_maps.get(名称))
.setScaleType(BaseSliderView.ScaleType.Fit);
//添加您的额外信息
text sliderView.bundle(新bundle());
textSliderView.getBundle()
.putString(“额外”,名称);
mDemoSlider.addSlider(textSliderView);
}
mDemoSlider.setPresetTransformer(SliderLayout.Transformer.Accordion);
mDemoSlider.setPresetIndicator(SliderLayout.PresetIndicators.右下);
setCustomAnimation(新的DescriptionAnimation());
mdemosider.setDuration(6000);
谢谢你的帮助


干杯

你应该这样做。在Asynctask的onPostExecute方法中使用此代码

                arraylist = new ArrayList<HashMap<String, String>>();
                JSONObject jsonResponse;
                try {
                    jsonResponse = new JSONObject(result);
                    JSONArray jsonMainNode = jsonResponse.optJSONArray("Main-header");

                    int lengthJsonArr = jsonMainNode.length();
                    for(int i=0; i < lengthJsonArr; i++)
                    {
                        HashMap<String, String> map = new HashMap<String, String>();
                        JSONObject jsonChildNode = jsonMainNode.getJSONObject(i);


                        map.put(jsonChildNode.getString("Title"),jsonChildNode.getString("HeaderImg2"));
                        arraylist.add(map);
                        for(String name : map.keySet()){
                            TextSliderView textSliderView = new TextSliderView(MainActivity.this);

                            textSliderView
                                    .description(name)
                                    .image(map.get(name))
                                    .setScaleType(BaseSliderView.ScaleType.Fit)
                                    .setOnSliderClickListener(MainActivity.this);

                            textSliderView.bundle(new Bundle());
                            textSliderView.getBundle()
                                    .putString("extra", name);

                            mDemoSlider.addSlider(textSliderView);
                        }
                        mDemoSlider.setPresetTransformer(SliderLayout.Transformer.Accordion);
                        mDemoSlider.setPresetIndicator(SliderLayout.PresetIndicators.Center_Bottom);
                        mDemoSlider.setCustomAnimation(new DescriptionAnimation());
                        mDemoSlider.setDuration(4000);
                        mDemoSlider.addOnPageChangeListener(MainActivity.this);
                    }


                } catch (JSONException e) {

                    e.printStackTrace();
                }


            }
arraylist=newarraylist();
JSONObject jsonResponse;
试一试{
jsonResponse=新的JSONObject(结果);
JSONArray jsonMainNode=jsonResponse.optJSONArray(“主头”);
int lengthJsonArr=jsonMainNode.length();
for(int i=0;i
您需要一次获取3张图像,这就是您想要实现的吗?您好。因为我正在使用此滑块,我认为不需要它。请参阅我上次的编辑。我添加了加载3张图像的原始代码。但我需要使用来自JsonData的此代码,这就是我需要的。这太奇怪了!您是否要求将jsonData显示为:“主标题”:[{“HeaderImg1”:“,”标题“:”标题1“},{“HeaderImg2”:“,”标题“:”标题2“},{“HeaderImg3”:“,”标题“:”标题3“}]或者你需要在不使用HashMap的情况下循环JsonData吗?
Main header
是我的Json数组。这段代码有什么奇怪之处?我需要在滑块上的每个幻灯片中显示这三个图像。。