从其他活动

时间:2017-01-05 17:08:48

标签: android jquery listview

我有我的"购物车" 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();


}

}

4 个答案:

答案 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中只添加了一个项目的原因。您需要保留旧列表并在购物车列表中添加新项目,因此您需要执行以下操作:

  1. ArrayList cartArray = new ArrayList();删除此行。

  2. 将已添加到购物车中的商品保存到某个位置,以便您可以在需要时获取并显示它们。您可以根据项目要求制作单例类或本地数据库。

答案 3 :(得分:0)

以下是更新arraylist的方法:

使用startActivityForResult调用MainActivity。在MainActivity上单击“购买”时,将所选项目发送回购物车。 在购物车活动中,您可以通过实施onActivityResult方法并更新列表视图来接收商品。

了解更多信息:https://developer.android.com/training/basics/intents/result.html

另请注意,用于显示另一个屏幕的Activity子类不是一个好习惯。