嵌套的JSON到ListActivity中

时间:2017-03-13 04:27:32

标签: android json listview

我有一些嵌套的JSON如下。

    {
      "status": 1,
      "data": [
        {
          "iMainServiceId": 1,
          "main": "NAILS",
          "sub": [
            {
              "iSubServiceId": 1,
              "vName": "Manicure",
              "fPrice": 15,
              "vDuration": "20 Minutes"
            },.......
]
    }
  ]
}

现在我希望将这些数据显示在ListActivity中。 在这里我想将firstarray作为listview中的标题,将另一个数组作为数据 我很困惑如何将两个不同的ArrayAdapter应用于此。

我应该为两个不同的ArrayLists做什么? 我应该如何使用ArrayAdapters?

2 个答案:

答案 0 :(得分:0)

您可以像下面一样简化json并使用一个ArrayList<Products>来获取所有项目和一个适配器来查看它!

{
    "products": [
      {
        "cat_id": "9",
        "position": "1",
        "sku": "wwww345"
      },
      {
        "cat_id": "9",
        "position": "2",
        "sku": "coof23"
      },
      {
        "cat_id": "9",
        "position": "3",
        "sku": "dde45"
      },
      {
        "cat_id": "9",
        "position": "4",
        "sku": "5555"
      },
      {
        "cat_id": "9",
        "position": "2",
        "sku": "coof23"
      },
      {
        "cat_id": "9",
        "position": "3",
        "sku": "dde45"
      },
      {
        "cat_id": "9",
        "position": "4",
        "sku": "5555"
      },
      {
        "cat_id": "9",
        "position": "1",
        "sku": "wwww345"
      }
    ]
  }

答案 1 :(得分:0)

如果对所有列表分区没有任何实际需要,则将列表展平。

List<JSONObject> prods = new ArrayList<>(); // Simple JSON list

JSONObject obj = new JSONObject(response);
JSONArray prodCat_list = obj.getArray("prodCat_list");
for (int i = 0; i < prodCat_list.length(); i++) {
    JSONArray innerProds = prodCat_list.getJSONObject(i).getJSONArray("prods");
    for (int j = 0; j < innerProds.length(); j++) {
        JSONObject prod = innerProds.getJSONObject(j)

        // TODO: parse prod

        prods.add(prod);
    }
}

adapter = new ArrayAdapter<String>(
    getContext(),  
    android.R.layout.simple_list_item_1, // example layout
    prods);

listView.setAdapter(adapter);