1

私の問題は、この2つの配列を1つのリストに設定すると、この2つの配列の適切な値を取得できないことです。

以下は、サーバーから取得した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);
                        }

だから誰かが私にこれを達成する方法を提案できますか?

4

1 に答える 1

1

2番目の配列データを入力しているときに、2回目の初期化を行っていません。LabelModel再初期化してくださいLabelModel

すでに入力した前のデータについて心配する必要はありません。次の配列データを入力するときに、再初期化する必要がありますLabelModel。それが機能することを願っています。

于 2012-12-06T11:28:27.967 に答える