在列表中添加值后,无法检索出来 (二)

2014-11-24 11:54:43 · 作者: · 浏览: 35
}
is.close();
result = sb.toString();
} catch (Exception e) {
Log.e("log_tag", "Error converting result " + e.toString());
}

// parse json data
try {
JSONArray jArray = new JSONArray(result);
for (int i = 0; i < jArray.length(); i++) {
JSONObject json_data = jArray.getJSONObject(i);

if (json_data.getString("company") != null) {
tempProgram.setCompanyName(json_data.getString("company"));
tempProgram.setID(json_data.getString("id"));
fetchDatefromID.add(i, tempProgram);
}

}

} catch (JSONException e) {
Log.e("log_tag", "Error parsing data " + e.toString());
}

for (int i = 0; i < fetchDatefromID.size(); i++) {
Log.v("log_tag","DataMy : "+fetchDatefromID.get(i).getCompanyName().toString());
}
return fetchDatefromID;
}解决方案:

把下面的代码:

[java]
if (json_data.getString("company") != null) {
tempProgram.setCompanyName(json_data.getString("company"));
tempProgram.setID(json_data.getString("id"));
fetchDatefromID.add(i, tempProgram);
}

if (json_data.getString("company") != null) {
tempProgram.setCompanyName(json_data.getString("company"));
tempProgram.setID(json_data.getString("id"));
fetchDatefromID.add(i, tempProgram);
}换成:

[java]
if (json_data.getString("company") != null) {
tempProgram = new CustomerList();
tempProgram.setCompanyName(json_data.getString("company"));
tempProgram.setID(json_data.getString("id"));
fetchDatefromID.add(i, tempProgram);
}

if (json_data.getString("company") != null) {
tempProgram = new CustomerList();
tempProgram.setCompanyName(json_data.getString("company"));
tempProgram.setID(json_data.getString("id"));
fetchDatefromID.add(i, tempProgram);
}
否则,list中的每一项都要引用同样的对象,那样的话总是显示你最后一次输入的数据。