【问题标题】:Fill array list with two array in adapter?用适配器中的两个数组填充数组列表?
【发布时间】:2012-12-06 10:14:16
【问题描述】:

我的问题是当我将这两个数组设置在一个列表中时,我无法获得这两个数组的正确值。

以下是我从服务器获得的 json 响应。 User_Label_List 并不总是得到,但Admin_Label_List 数组很常见。

{
    "User_Label_List": [
        {
            "iLabelID": "60",
            "vLabel": "At Ground"
        }
    ],
    "Admin_Label_List": [
        {
            "iLabelID": "53",
            "vLabel": "At School"
        },
        {
            "iLabelID": "51",
            "vLabel": "At Office"
        },
        {
            "iLabelID": "52",
            "vLabel": "At Work"
        },
        {
            "iLabelID": "50",
            "vLabel": "At None"
        },
        {
            "iLabelID": "49",
            "vLabel": "At Home"
        }
    ]
}

这是我的代码。

try {
                        JSONObject jsonObject = new JSONObject(result);
                        JSONArray jsonArray = jsonObject.getJSONArray("Admin_Label_List");
                        labelarray = new ArrayList<LabelModel>();
                        for (int i = 0; i < jsonArray.length(); i++) {
                            labelModel = new LabelModel();
                            JSONObject labeljson = jsonArray.getJSONObject(i);
    //                      lableList.put("iLabelID", labeljson.getString("iLabelID"));
    //                      lableList.put("vLabel", labeljson.getString("vLabel"));
                            labelModel.setLabelId(labeljson.getString("iLabelID"));
                            labelModel.setLabelName(labeljson.getString("vLabel"));
                            labelarray.add(labelModel);
                        }

                        Log.e("length", "== "+jsonObject.length());
                        if (jsonObject.length() == 2) {

                        String arryName = jsonObject.names().getString(1);
                        if (arryName.equalsIgnoreCase("User_Label_List")) {
                            JSONArray userjsonArray = jsonObject.getJSONArray("User_Label_List");
                            userlabelarray = new ArrayList<LabelModel>();
                            for (int i = 0; i < userjsonArray.length(); i++) {
    //                          userLabelModel = new UserLabelModel();
                                JSONObject labeljson = userjsonArray.getJSONObject(i);
    //                          lableList.put("iLabelID", labeljson.getString("iLabelID"));
    //                          lableList.put("vLabel", labeljson.getString("vLabel"));
                                labelModel.setLabelId(labeljson.getString("iLabelID"));
                                labelModel.setLabelName(labeljson.getString("vLabel"));
                                userlabelarray.add(labelModel);
                            }

    //                      userlabelarray.addAll(labelarray);
                        }
                        List<LabelModel> union = new ArrayList<LabelModel>(labelarray);
                        union.addAll(userlabelarray);
                        customeLabelAdpater = new CustomeLabelAdpater(ChooselabelActivity.this, lableList);
                        listView.setAdapter(customeLabelAdpater);
                        }

那么任何人都可以建议我如何实现这一目标?

【问题讨论】:

    标签: android json arraylist


    【解决方案1】:

    您没有第二次初始化您的LabelModel,而您正在填充您的第二个数组数据,请您重新初始化您的LabelModel

    不用担心之前已经填写的数据,因此在填写下一个数组数据时,您必须重新初始化您的LabelModel,希望它会起作用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-21
      • 1970-01-01
      • 2013-09-10
      • 1970-01-01
      • 2021-12-14
      • 1970-01-01
      • 2011-02-02
      • 1970-01-01
      相关资源
      最近更新 更多