私の問題は、この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);
}
だから誰かが私にこれを達成する方法を提案できますか?