我有我的"购物车" listview,显示从主活动中单击的项目。我在mainactivity中还有一个listview显示所有项目。每当我点击"购买"时,该项目就会成功发送到"购物车"的列表视图。然后在我的购物车活动中,我有"添加项目"返回MainActivity以添加更多项目的按钮。如果我点击"购买"再次,所选项目将覆盖现有项目。
我错过了什么吗?
这是我的Cart.class
public class Cart extends MainActivity {
ListView cartList;
CartCustomAdapter cartCustomAdapter;
String name, price;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_cart);
ArrayList<Order> cartArray = new ArrayList<Order>();
Bundle bundle = getIntent().getExtras();
Button checkout = (Button) findViewById(R.id.check_out);
Button add_item = (Button) findViewById(R.id.add_item);
name = bundle.getString("i_name");
price = bundle.getString("i_price");
add_item.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Cart.this,MainActivity.class);
startActivity(intent);
}
});
cartArray.add(new Order(name,price,"1"));
cartCustomAdapter = new CartCustomAdapter(Cart.this,R.layout.list_cart,cartArray);
cartList = (ListView) findViewById(R.id.cart_list);
cartList.setItemsCanFocus(false);
cartList.setAdapter(cartCustomAdapter);
cartCustomAdapter.notifyDataSetChanged();
}
}
答案 0 :(得分:0)
ArrayList<Order> cartArray = new ArrayList<Order>();
您每次都在创建 new (空)ArrayList。您应该只使用Cart-Thing中已有的ArrayList并将新购买添加到其中。
答案 1 :(得分:0)
使cartArray成为静态和一个实例字段,因此即使您应该使用sqlite数据库来真正保留此类结构化数据,也会创建一次。删除ArrayList cartArray = new ArrayList();来自你的onCreate活动。
public class Cart extends MainActivity {
ListView cartList;
CartCustomAdapter cartCustomAdapter;
String name, price;
static ArrayList<Order> cartArray = new ArrayList<Order>();
}
答案 2 :(得分:0)
ArrayList cartArray = new ArrayList();
每次导航到Cart Activity时都会创建新的arraylist,这就是为什么在arraylist中只添加了一个项目的原因。您需要保留旧列表并在购物车列表中添加新项目,因此您需要执行以下操作:
ArrayList cartArray = new ArrayList();删除此行。
将已添加到购物车中的商品保存到某个位置,以便您可以在需要时获取并显示它们。您可以根据项目要求制作单例类或本地数据库。
答案 3 :(得分:0)
以下是更新arraylist的方法:
使用startActivityForResult
调用MainActivity。在MainActivity上单击“购买”时,将所选项目发送回购物车。
在购物车活动中,您可以通过实施onActivityResult
方法并更新列表视图来接收商品。
了解更多信息:https://developer.android.com/training/basics/intents/result.html
另请注意,用于显示另一个屏幕的Activity子类不是一个好习惯。