recyclerview.addOnItemTouchListener我需要将多个产品添加到购物车recyclerview

时间:2018-11-28 12:41:37

标签: android android-recyclerview android-volley cart

我只给PlaceOderActivity购买一种产品。我需要多种产品来购物
我需要多种产品来放置商品

recyclerview.addOnItemTouchListener(new RecyclerItemClickListener(getApplicationContext(), new RecyclerItemClickListener.OnItemClickListener() {
                    @Override
                    public void onItemClick(View view, int position) {
                        ProductsList selItem =  listItems.get(position);
                        final String[] strings = {
                                selItem.getProductName(),
                                selItem.getSalePrice(),
                                String.valueOf(selItem.getQnty()),
                        };
                        Log.w(TAG, Arrays.toString(strings));
                        final String itemname =  listItems.get(position).getProductName();
                       final float price = Float.parseFloat(listItems.get(position).getSalePrice());
                      final int qnty =  listItems.get(position).getQnty();
                      ButtonBtn.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View view) {
                            Intent intent = new Intent(ProductListActivity.this,PlaceOderActivity.class);
                            intent.putExtra("itemname",itemname);
                            intent.putExtra("Price",price);
                            intent.putExtra("qnty",qnty);
                            intent.putExtra("strings",strings);

                            startActivity(intent);
                            }
                        });
                        }
                })
        );

1 个答案:

答案 0 :(得分:0)

基本上,您正在做的只是跟踪用户添加到购物车中的最后一个产品。

每次代码到达RecyclerItemClickListener时,您都用新的替换上一个项目。

您需要声明的是(作为类属性):

private List<Product> productsList = new ArrayList()

每次用户单击添加产品时,您只需将其添加到列表中,如下所示:

productsList.add(Product)

然后您可以序列化和反序列化Intent Extras中的列表,甚至只是将序列化的字符串保存到缓存文件中,即可在下一个活动中加载。

这是一个更好的例子:

public class Product {

   /** Property name */
   String name;

   /** Property salePrice */
   String salePrice;

   /** Property quantity */
   String quantity;

   /**
    * Constructor
    */
   public Product() {
   }

   /**
    * Gets the name
    */
   public String getName() {
      return this.name;
   }

   /**
    * Sets the name
    */
   public void setName(String value) {
      this.name = value;
   }

   /**
    * Gets the salePrice
    */
   public String getSalePrice() {
      return this.salePrice;
   }

   /**
    * Sets the salePrice
    */
   public void setSalePrice(String value) {
      this.salePrice = value;
   }

   /**
    * Gets the quantity
    */
   public String getQuantity() {
      return this.quantity;
   }

   /**
    * Sets the quantity
    */
   public void setQuantity(String value) {
      this.quantity = value;
   }
}

现在,您在ProductListActivity中需要一个产品列表,并且每次用户将产品添加到购物车时,您都可以使用list.add()而不是您在ModelCart中通过使用setter替换的方式在列表中追加产品每次列出该列表。