用适配器中的两个数组填充数组列表?

时间:2012-12-06 10:14:17

标签: android json arraylist

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

以下是我从服务器获得的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);
                        }

所以任何人都可以建议我如何实现这个目标?

1 个答案:

答案 0 :(得分:1)

当您填写第二个阵列数据时,您没有在第二次初始化LabelModel,是否可以重新初始化LabelModel

不要担心以前填过的数据,因此在填写下一个数组数据时,您必须重新初始化LabelModel,希望它能正常工作。