如何将2个不同的JSONArray解析为1个ListView

时间:2016-08-26 01:55:04

标签: android json listview

我有一个需要帮助的问题,我的服务器上有以下json文件。现在作为一个临时解决方案,我创建了两个不同的视图,xmls,getter&按照这个Youtube教程设置setters,adapter。 我想知道是否有人可以指导或教我如何将两者结合在一起,因为我还在学习Android。

我正在尝试将apifrom和apito组合到1个listView中并相应地将它们安排到date_time

以下是来自服务器的JSON响应。

JSON响应

{
  "apifrom": [
    {
      "id": 1,
      "from_account": "Account2",
      "to_account": "Cash",
      "amount": "4394.0",
      "date_time": "2016-02-26T09:17:51.518Z"
      }
  ],
  "apito": [
    {
      "id": 189,
      "from_account": "Account1",
      "to_account": "Account2",
      "amount": "1200.0",
      "date_time": "2016-03-24T08:19:23.846Z"
    }
  ]
}

3 个答案:

答案 0 :(得分:0)

你可以做这样的事情!

JSONObject jsonRes = new JSONObject(jsonResponse);
JSONArray jsonArr1 = jsonRes.getJSONArray("apiTo");
JSONArray jsonArr2 = jsonRes.getJSONArray("apiFrom");

在此之后,您可以解析两个JSON数组,生成该对象,并将其传递给ArrayList

List<ItemObject> jsonObject = new ArrayList<ItemObject>();
//then Add object to arraylist
jsonObject.add(ParsedJsonObject);

要结合两个JSONArray,您可以尝试这样的事情:

    private JSONArray concatArray(JSONArray arr1, JSONArray arr2)
        throws JSONException {
    JSONArray result = new JSONArray();
    for (int i = 0; i < arr1.length(); i++) {
        result.put(arr1.get(i));
    }
    for (int i = 0; i < arr2.length(); i++) {
        result.put(arr2.get(i));
    }
    return result;
}

在ListView的适配器中设置它。希望这有帮助!

答案 1 :(得分:0)

定义您自己的Bean对象,您可以将任何不同的JSONArray放入您的bean中。之后,使用

ArrayList<YourBean>

作为ListView的数据源。

毕竟,JSONArray是数据模块,ListView是UI组件,您可以随时定义它们之间的关系。

答案 2 :(得分:0)

有两种方法可以做到这一点,你可以采用hashmap的arraylist并为每个新记录创建新的hashmap,也可以采用POJO类的arraylist。

public class POJOclas {
    public String name,id;

}

像这样使用Arraylist

public ArrayList<POJOclas> mypojocls= new ArrayList<POJOclas>();

然后在arraylist中插入数据