JSON数据数组请求不断跳过onResponse [英] Json data array request keeps skipping onResponse

查看:218
本文介绍了JSON数据数组请求不断跳过onResponse的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直试图查找并找到解决我问题的方法.

I keep trying to look up and find a solution for my problem.

我正在用URL中的json数据填充SpinnerJson数据是无名的,并且我试图将数据放入ArrayList中,所以可以填充Spinner .

I am populating a Spinner with json data from a URL, the Json data is nameless and I'm trying to get the data into an ArrayList so I can populate the Spinner.

每当我debug出现StringRequestJSONArrayRequest后,我都会看到它跳过了onResponse()方法,请查看我的代码,看看我在做什么错

Whenever I debug I can see that it skips my onResponse() method after making either StringRequest or JSONArrayRequest, Please look at my code and see what am I doing wrong

yearsp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            if(ySelect)
            {
                selectedYear = yearsp.getSelectedItem().toString();

                URL1 = URL + "/" + selectedYear;
                loadSpinnerDataMake();

                adapterMake.clear();
                adapterMake.addAll(makesName);

            }
            else
                ySelect = true;

        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
    });


String URL1 = http://carmakemodeldb.com/vehicle/makes/2011 //this is here for you to see the link
public void loadSpinnerDataMake()
{
    makesName = new ArrayList<String>();

    RequestQueue requestQueue = Volley.newRequestQueue(getContext());
    JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(URL1, new Response.Listener<JSONArray>() {
    @Override
    public void onResponse(JSONArray response) {
        try {

            for (int x = 0; x < response.length(); x++) {
                JSONObject obMake = response.getJSONObject(x);
                String nMake = obMake.getString("make");
                makesName.add(nMake);
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            error.printStackTrace();

        }
    });


    requestQueue.add(jsonArrayRequest);

}

这是我来自URL1

[{"make":"Acura"},{"make":"Aston Martin"},{"make":"Audi"},{"make":"Bentley"},{"make":"BMW"},{"make":"Bugatti"},{"make":"Buick"},{"make":"Cadillac"},{"make":"Chevrolet"},{"make":"Chrysler"}]

推荐答案

我修复了我的问题,谢谢大家的帮助,但我想出了解决办法,方法是删除将数组列表添加到适配器并将其放置在OnResponse中的地方

I fixed my issue thank you everyone who has helped but i figured it out by removing where im adding the arraylist to the adapter and placing it in the OnResponse

public void loadSpinnerDataMake()
{

    makesName = new ArrayList<String>();

    JsonArrayRequest jsonObjectRequest = new JsonArrayRequest(URL1, new Response.Listener<JSONArray>() {
        @Override
        public void onResponse(JSONArray response) {
            try {
                JSONArray jsonArray = response;
                for (int x = 0; x < jsonArray.length(); x++) {
                    JSONObject obMake = jsonArray.getJSONObject(x);
                    String nMake = obMake.getString("make");
                    makesName.add(nMake);

                    adapterMake.clear();
                    adapterMake.addAll(makesName);
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            error.printStackTrace();

        }
    });

    RequestQueue requestQueue = Volley.newRequestQueue(getContext());

    requestQueue.add(jsonObjectRequest);

}

这篇关于JSON数据数组请求不断跳过onResponse的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆