如何增加或减少购物车中的商品?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何增加或减少购物车中的商品?相关的知识,希望对你有一定的参考价值。

我的购物车出现了一些问题,我一一写下来。

1.当我想增加商品数量时,购物车中的商品计数器是通用的,也就是说,如果第一件商品是3,那么下一件商品就会从4开始,这是什么问题?

2.它还为大家写了最新商品的价格。

3.当我确认最终购买时,如何清空购物车?

4.那我怎么计算商品的总价呢?

卡适配器(FacultyAdapter)

 dbhandler mydb;

int a=0;
int counter=1;
int baseprice=1;
private Context context;
private String mes="";
private List<Faculty> facultyList;

public FacultyAdapter(Context context, List<Faculty> facultyList) {
    this.context = context;
    this.facultyList=facultyList;
}

@NonNull
@Override
public FacultyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

    View view = LayoutInflater.from(context).inflate(R.layout.itemcard,parent,false);
    RecyclerView.LayoutParams lp = new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
    view.setLayoutParams(lp);

    return new FacultyViewHolder(view);
}


 /////////////////////////////////////////////////
 @Override
 public void onBindViewHolder(@NonNull final FacultyViewHolder holder, int position) {
    final Faculty s = facultyList.get(position);
    holder.title.setText(s.getName());
    holder.price.setText(s.getPrice());
    baseprice=Integer.parseInt(s.getPrice());
    String photoname=s.getImage();

    Glide
            .with(context)
            .load( Urls.image+photoname)
            .placeholder(R.mipmap.ic_launcher_round)
            .error(R.drawable.logo)
           .into(holder.img);


    mydb=new dbhandler(context);

    holder.remove.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
                String e=s.getId().toString();
                mydb.delete(e);
               notifyDataSetChanged();                     
        }

    });

增减键

   holder.inc.setOnClickListener(new View.OnClickListener() {
       @Override
       public void onClick(View v) {
           int tprice=0;
           Increment();
           holder.count.setText(""+counter);
           tprice= baseprice * counter;
           holder.price.setText(""+tprice);

       }
   });
    holder.dec.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            int tprice=0;
            Deccrement();
            holder.count.setText(""+counter);
            tprice= baseprice * counter;
            holder.price.setText(""+tprice);

        }
    });
}
    ////////////////////////////////////////

  @Override
  public int getItemCount() {
    return facultyList.size();
  }
    ////////////////////////////////


public class FacultyViewHolder extends RecyclerView.ViewHolder {

    TextView title;
    TextView price,count;
    CircleImageView img;
    CardView card;
  ImageButton remove,inc,dec;
    private FacultyViewHolder(View itemView) {
        super(itemView);
        title = itemView.findViewById(R.id.txt_list_item_title);
        price = itemView.findViewById(R.id.txt_list_item_des);
        remove = itemView.findViewById(R.id.remove_item);
       img=itemView.findViewById(R.id.image_cart);
        inc=itemView.findViewById(R.id.increment);
        dec=itemView.findViewById(R.id.decrement);
        count=itemView.findViewById(R.id.count);
        card = (CardView) itemView.findViewById(R.id.card);
    }
  }

增减函数

private void Increment(){
    counter++;
}
private void Deccrement(){
    if (counter==1)
        return;
    else {
        counter--;
    }
 }

}
答案

问题1和2 int counter=1; int baseprice=1 不应该是类变量,为此你可以在你的模型类中建立一个变量,然后从你的模型中取值。

问题3.你是如何通过Rest API或SQLLite数据库获取数据到适配器的?你如何通过Rest API或SQLLite数据库获取数据到适配器。如果你是通过Rest API获取数据,那么它应该在你的服务器端处理,如果它在你的SQLlite数据库中,那么 db.execSQL("delete from "+ TABLE_NAME);

问题4:如果你是在模型类中节省价格,那么

long sum = 0;
for (Faculty m : facultyList) { // or whatever your local variable is
sum += m.ttotal();
}

希望对你有所帮助...

以上是关于如何增加或减少购物车中的商品?的主要内容,如果未能解决你的问题,请参考以下文章

angularjs购物车练习

java 购物车 - 增加减少商品数量 - 控件

如何使用 Flutter 中的 Provider 增加电子商务购物车中的商品数量

javascript详解实现购物车完整功能(附效果图,完整代码)

C++实现:编写商品销售统计程序。

JavaScript 实现购物车