【发布时间】:2017-06-20 05:23:26
【问题描述】:
这是我的示例json 结果
[
{
"ApplicationId": "1609000001",
"Status": "Submitted"
},
{
"ApplicationId": "1609000002",
"Status": "Received"
},
{
"ApplicationId": "1609000004",
"Status": "Draft"
},
]
我正在使用Volley 来获取我的json 结果。我得到了正确的值,但是 ListView 上显示的项目继续显示最后一个项目,例如基于上面的示例 json 数据是 1609000004 它返回相同的值。就像结果是多少一样,例如 3,它将显示 3 1609000004 应用程序 id。
这是我的MainActivity
ArrayList<Notification> submissionList;
ListView status_lv;
onCreate(Bundle savedInstanceState) {
status_lv = (ListView) findViewById(R.id.status_lv);
statusList = new ArrayList<Notification>();
callVolley();
StatusAdapter adapter = new StatusAdapter(MainActivity.this, R.layout.listrow, statusList);
status_lv.setAdapter(adapter);
}
private void callVolley() {
JsonArrayRequest req = new JsonArrayRequest(Constants.URL,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
try {
Notification status = new Notification();
for (int i = 0; i < 5; i++) {
JSONObject submissionObj = (JSONObject) response.get(i);
status.setApplicationId(submissionObj.getString("ApplicationId"));
status.setStatus(submissionObj.getString("Status"));
statusList.add(status);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
requestQueue.add(req);
}
在检查我的for loop 后,我尝试输入Log,它得到了正确的数据,其中ApplicationId 是1609000001、1609000002、1609000004。但我不知道为什么它会在我的设备中显示最后一个值.感谢您的帮助。
【问题讨论】:
-
将
for (int i = 0; i < 5; i++) {更改为for (int i = 0; i < response.length(); i++) {。还要在 for 循环中初始化Notification status = new Notification();。 -
你能分享你的列表适配器代码
-
@Piyush 我试图只显示返回的 json 结果的前 5 个。
-
@mori 阅读我的全部评论
-
@Piyush 谢谢你现在的工作