【问题标题】:For loop is displaying only one array which is end of it but i have 2 items in itFor 循环只显示一个数组,它是它的结尾,但我有 2 个项目
【发布时间】:2015-11-11 18:02:33
【问题描述】:

For 循环只显示一个项目,这是它的结尾,但我有 2 个项目。我必须添加列表视图吗?

这是我的 JSON: 在子项中,我有 2 个数组,其中仅显示 1 个数组,也只有 2 个项

这是我的 JSON:http://www.yell4food.com/json/data_standard_item_new.php?rname=standardtakeaway

这里的 For 循环我在子项中有 2 个项,但它只显示子项数组中的最后一项:

"menu_name": "Beverages",
        "items": [
            {
                "id": 1,
                "BaseName": "Coca-Cola",
                "itemdesc": "",
                "subitems": [
                    {
                        "id": 1,
                        "SubItemdesc": "0.33L",
                        "SubItemprice": "0.90"
                    },
                    {
                        "id": 2,
                        "SubItemdesc": "1.5L",
                        "SubItemprice": "2.00"
                    }
                ]
            }

这是我的 Java 代码:

public class Secondlevel extends Activity {

    List<JSONParser> itemsdata = new ArrayList<JSONParser>();
    String item, ids;
    ListView sec;
    Second_adapter secondAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.secondlist);
        sec = (ListView) findViewById(R.id.seondlst);
//        sec.setScrollContainer(false);
        secondAdapter = new Second_adapter(Secondlevel.this, itemsdata);
        sec.setAdapter(secondAdapter);
        Intent hello = getIntent();
        item = hello.getStringExtra("name");
        loaditems();
    }

    private void loaditems() {
        String Tag = "jsontag";
        String url = "http://www.yell4food.com/json/data_standard_item_new.php?rname=standardtakeaway";
        final ProgressDialog progressDialog = new ProgressDialog(this);
        progressDialog.setMessage("Loading...");
        progressDialog.show();
        JsonArrayRequest arrayRequest = new JsonArrayRequest(Request.Method.GET, url, (String) null, new Response.Listener<JSONArray>() {
            @Override
            public void onResponse(JSONArray response) {
                try {
                    for (int i = 0; i < response.length(); i++) {
                        JSONObject first = response.getJSONObject(i);
                        JSONArray getitems = first.getJSONArray("items");
                        for (int j = 0; j < getitems.length(); j++) {
                            JSONObject sitems = getitems.getJSONObject(j);
                            JSONParser parser = new JSONParser();
                            parser.setIid(sitems.getInt("id"));
                            parser.setBaseName(sitems.getString("BaseName"));
                            parser.setItemdesc(sitems.getString("itemdesc"));
                            JSONArray subitems = sitems.getJSONArray("subitems");
                            for (int l = 0; l < subitems.length(); l++) {
                                JSONObject thrid = subitems.getJSONObject(l);
                                parser.setSid(thrid.getInt("id"));
                                parser.setSubItemdesc(thrid.getString("SubItemdesc"));
                                parser.setSubItemprice(thrid.getString("SubItemprice"));

                            }

                            itemsdata.add(parser);
                        }

                        secondAdapter.notifyDataSetChanged();
                    }
                    progressDialog.hide();
                } catch (JSONException e) {
                    e.printStackTrace();
                }

            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                VolleyLog.d("TaG", "Error: " + error);
                Toast.makeText(getApplicationContext(),
                        error.getMessage(), Toast.LENGTH_SHORT).show();

            }

        }) {
            @Override
            protected Map<String, String> getParams() {
                Map<String, String> params = new HashMap<String, String>();
                params.put("Content-Type", "application/json");
                params.put("name", item);
                return params;
            }
        };
        AppController.getInstance().addToRequestQueue(arrayRequest);
    }
}

【问题讨论】:

  • 请粘贴整个 JSON。
  • 我认为是来自 url:yell4food.com/json/…
  • 我添加了 JSON 链接,请检查一下

标签: java android arrays json


【解决方案1】:

试试这个:

try {
                    for (int i = 0; i < response.length(); i++) {
                        JSONObject first = response.getJSONObject(i);
                        JSONArray getitems = first.getJSONArray("items");
                        for (int j = 0; j < getitems.length(); j++) {
                            JSONObject sitems = getitems.getJSONObject(j);
                            JSONArray subitems = sitems.getJSONArray("subitems");
                            for (int l = 0; l < subitems.length(); l++) {
                                JSONObject thrid = subitems.getJSONObject(l);
                            JSONParser parser = new JSONParser();
                            parser.setIid(sitems.getInt("id"));
                            parser.setBaseName(sitems.getString("BaseName"));
                            parser.setItemdesc(sitems.getString("itemdesc"));
                                parser.setSid(thrid.getInt("id"));
                                parser.setSubItemdesc(thrid.getString("SubItemdesc"));
                                parser.setSubItemprice(thrid.getString("SubItemprice"));
                                itemsdata.add(parser);
                            }
                        }

                        secondAdapter.notifyDataSetChanged();
                    }
                    progressDialog.hide();
                }

【讨论】:

  • 请注意,您在每次迭代最后一个 for 循环时都会覆盖解析器
  • 在你的中间循环中也是如此
  • 成功了,你能告诉我你做了什么吗?我是安卓新手
  • 正如我告诉你的,你每次都覆盖你的解析器对象。比如,int x=5; x=7;所以我将列表插入放在你最后一个 for 循环中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-17
  • 1970-01-01
  • 2011-10-13
相关资源
最近更新 更多