我正在创建一个json数组并从arraylist中获取数据。 我的问题是,当我在json中保存数据时,它只会将arraylist的最后数据保存到每个索引。
这是我的代码:
JSONArray ItemsRequiredobArr=new JSONArray();
JSONObject ItemsRequiredob=new JSONObject();
for(int ii=0;ii<StocklistAdapter.listItemN.size();ii++){
ItemsRequiredob.put("ItemID",StocklistAdapter.itemIdN.get(ii));
ItemsRequiredob.put("StockCode",StocklistAdapter.listItemN.get(ii));
Toast.makeText(this, "StockCode"+StocklistAdapter.listItemN.get(ii), Toast.LENGTH_SHORT).show();
ItemsRequiredob.put("Description",StocklistAdapter.listAddressN.get(ii));
ItemsRequiredob.put("Quantity",StocklistAdapter.QuaN.get(ii));
ItemsRequiredobArr.put(ItemsRequiredob);
/*Toast.makeText(mContext, "i"+i+" "+listAddressN.get(i), Toast.LENGTH_SHORT).show();*/
Log.e("d", ItemsRequiredob.get("ItemID").toString());
}
ob.put("ItemsRequired",ItemsRequiredobArr);
这是我上面的数组
[{"ItemsRequired":[{"ItemID":"3224","StockCode":"10030","Description":"Complete - 3 section mattress\r\n\r\nPolyeurethane velcro grips","Quantity":"0"},{"ItemID":"3224","StockCode":"10030","Description":"Complete - 3 section mattress\r\n\r\nPolyeurethane velcro grips","Quantity":"0"}]
正如您所看到的,两个索引具有相同的数据,但是arraylist包含索引0和1上的不同数据。 因为我是初学者,请帮帮我。
答案 0 :(得分:0)
您的ItemsRequiredob对象已创建一次,并且您每次都在设置该值,因此它正在讨论每个对象的最后一项,因此将ItemsRequiredob
置于此类循环中,它将正常工作
for(int ii=0;ii<StocklistAdapter.listItemN.size();ii++){
JSONObject ItemsRequiredob=new JSONObject();
ItemsRequiredob.put("ItemID",StocklistAdapter.itemIdN.get(ii));
ItemsRequiredob.put("StockCode",StocklistAdapter.listItemN.get(ii));
Toast.makeText(this, "StockCode"+StocklistAdapter.listItemN.get(ii), Toast.LENGTH_SHORT).show();
ItemsRequiredob.put("Description",StocklistAdapter.listAddressN.get(ii));
ItemsRequiredob.put("Quantity",StocklistAdapter.QuaN.get(ii));
ItemsRequiredobArr.put(ItemsRequiredob);
/*Toast.makeText(mContext, "i"+i+" "+listAddressN.get(i), Toast.LENGTH_SHORT).show();*/
Log.e("d", ItemsRequiredob.get("ItemID").toString());
}