正如我理解你的问题,我试图提供如下答案.我希望您了解Model类概念,这会让生活更轻松.
步骤1 :
首先创建一个模型类并使其成为Serializable以传递模型对象,因为我可以看到您有两个活动,一个用于产品列表,第二个用于计费.在此您可以根据您的要求添加/删除一些字段.
public class Product implements Serializable {
public String productName;
public int price;
public int quantity;
public int total;
}
步骤2:现在我假设您知道如何使用gson库,link1和link2将数据分配给ArrayList userProducts.
步骤3:下一步是在listview setOnItemClickListener中计算total = price * quantity,就像这样,
Product product = userProducts.get(postiton);
product.total = product.price * product.quantity;
步骤4:将带有Serializable对象的arraylist从一个活动发送到另一个活动,
Intent intent = new Intent(ProductActivity.this, BillingActivity.class);
intent.putExtra("user_products", userProducts);
startActivity(intent);
第5步:获取结算活动中的值,
if (getIntent() != null) {
userProducts = (ArrayList) getIntent()
.getSerializableExtra("user_products");
}
第6步:现在你的问题是如何发布它们?问题是你要为产品列表创建jsonarray,为某些其他字段创建jsonobject,然后你可以将主jsonobject作为字符串发送,非常好的tutorial.
try {
JSONObject mainJObject = new JSONObject();
JSONArray productJArray = new JSONArray();
for (int i = 0; i < userProducts.size(); i++) {
JSONObject productJObject = new JSONObject();
productJObject.put("productname", userProducts.get(i).productName);
productJObject.put("price", userProducts.get(i).price);
productJObject.put("quantity", userProducts.get(i).quantity);
productJObject.put("total", userProducts.get(i).total);
productJArray.put(productJObject);
}
mainJObject.put("products", productJArray);
mainJObject.put("grandd_total", grandTotal);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
看起来应该是这样的,
{
"products": [
{
"productname": "p1",
"price": "15",
"quantity": "6",
"total": 90
},
{
"productname": "p2",
"price": "25",
"quantity": "4",
"total": 100
}
],
"grandd_total": 190
}