Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何管理recyclerview项目的按钮点击_Android_Android Recyclerview - Fatal编程技术网

Android 如何管理recyclerview项目的按钮点击

Android 如何管理recyclerview项目的按钮点击,android,android-recyclerview,Android,Android Recyclerview,我有recyclerview,它正在显示产品购物车列表,现在我添加了功能,用户可以更改产品数量,但问题是,如果我更改第一个项目的数量,它也会影响下一个或其他项目。任何人可以检查这个,我张贴的代码也 private List<CartList> stList; String prodName = "", imgURL = "", prodSize = "", prodColor = "", prdAvail = ""; double prodPric

我有recyclerview,它正在显示产品购物车列表,现在我添加了功能,用户可以更改产品数量,但问题是,如果我更改第一个项目的数量,它也会影响下一个或其他项目。任何人可以检查这个,我张贴的代码也

 private List<CartList> stList;

        String prodName = "", imgURL = "", prodSize = "", prodColor = "", prdAvail = "";
        double prodPrice = 0.0, totValue = 0.0;
        int prodQty = 1, prdAvl = 0;

        @NonNull
        @Override
        public CardViewDataAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,
                                                                 int viewType) {
            @SuppressLint("InflateParams")
            View itemLayoutView = LayoutInflater.from(parent.getContext()).inflate(
                    R.layout.layout_cartlist_item, null);

            return new CardViewDataAdapter.ViewHolder(itemLayoutView);
        }

        CardViewDataAdapter(List<CartList> students) {
            this.stList = students;
        }

        @Override
        public void onBindViewHolder(@NonNull final CardViewDataAdapter.ViewHolder viewHolder, final int position) {

            try {
                prodName = stList.get(position).getCartList1().getProdName();
                imgURL = stList.get(position).getCartList1().getProdImage();
                prodSize = stList.get(position).getCartList1().getProdSize();
                prodColor = stList.get(position).getCartList1().getProdColor();
                prodQty = stList.get(position).getCartList1().getProdQty();
                prodPrice = stList.get(position).getCartList1().getProdQty();
                String productAvails = stList.get(position).getCartList1().getWarehouseDetail();
                totValue = stList.get(position).getCartList1().getGrandTotal() -
                        stList.get(position).getCartList1().getShippingCost();

                String avails[] = productAvails.split(":");
                prdAvail = avails[2];
                prdAvl = Integer.parseInt(prdAvail);

            } catch (Exception e) {
                e.printStackTrace();
            }
            try {
                if (stList.get(position).getCartList1().getSeller_id() == 0
                        || stList.get(position).getCartList1().getSeller_id() != 1) {
                    viewHolder.tvSellerName.setText("seller: Milmila");
                } else {
                    viewHolder.tvSellerName.setText("seller: Seajol Solutions");
                }
            } catch (Exception e) {
                e.printStackTrace();
            }

            viewHolder.tvName.setText(prodName);
            viewHolder.tvProdPrice.setText("Rs. " + String.valueOf(totValue));
            viewHolder.tvProdQty.setText("Qty: " + String.valueOf(prodQty));
            viewHolder.tvProdSize.setText("Size: " + String.valueOf(prodSize));
            viewHolder.tvProdColor.setText("Color: " + String.valueOf(prodColor));
            if (prdAvail.isEmpty() || prdAvail.equalsIgnoreCase("0.0")) {
                viewHolder.prdAvail.setText("Out Of Stock");
            } else {
                viewHolder.prdAvail.setText("Available in stock: " + prdAvail);
            }

            Glide.with(mContext)
                    .load(imgURL)
                    .apply(new RequestOptions()
                            .placeholder(R.drawable.no_image))
                    .into(viewHolder.prodImage);

            viewHolder.chkSelected.setChecked(stList.get(position).getSelected());
            viewHolder.chkSelected.setTag(stList.get(position));

           // int quantity_count=prodQty = stList.get(position).getCartList1().getProdQty();

           viewHolder.edt_product_qty.setText(String.valueOf(prodQty));
            viewHolder.increase_product_qty.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    prodQty++;
                    viewHolder.edt_product_qty.setText(String.valueOf(prodQty));

                }
            });

            viewHolder.decrease_product_qty.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    if (prodQty>1)
                    {
                        prodQty--;
                        viewHolder.edt_product_qty.setText(String.valueOf(prodQty));

                    }

                }
            });

是的,这可能会发生,因为在scroll recyclerview时可能会更改滚动状态和位置

您使用的是相同的prodQty变量,并且直接使用viewHolder.edt\U product\U qty.setText INDER按钮单击,因此在这种情况下,您的edt\U product\U数量将根据您的滚动位置而不同

您可以在列表项中的quantity edittext中使用android:freezesText=true

您可以将其管理为我的添加位置作为标记按钮

增加数量:

viewHolder.increase_product_qty.setTag(viewHolder.edt_product_qty);
viewHolder.increase_product_qty.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        EditText selEditText = (EditText) v.getTag();
        final int qty = Integer.parseInt(selEditText.getText().toString()) + 1;
        selEditText.setText(String.valueOf(qty));
    }
});
viewHolder.decrease_product_qty.setTag(viewHolder.edt_product_qty);
viewHolder.decrease_product_qty.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        EditText selEditText = (EditText) v.getTag();
        final int qty = Integer.parseInt(selEditText.getText().toString()) - 1;
         if (qty>1){
            selEditText.setText(String.valueOf(qty));
        }
    }
});
减少数量:

viewHolder.increase_product_qty.setTag(viewHolder.edt_product_qty);
viewHolder.increase_product_qty.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        EditText selEditText = (EditText) v.getTag();
        final int qty = Integer.parseInt(selEditText.getText().toString()) + 1;
        selEditText.setText(String.valueOf(qty));
    }
});
viewHolder.decrease_product_qty.setTag(viewHolder.edt_product_qty);
viewHolder.decrease_product_qty.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        EditText selEditText = (EditText) v.getTag();
        final int qty = Integer.parseInt(selEditText.getText().toString()) - 1;
         if (qty>1){
            selEditText.setText(String.valueOf(qty));
        }
    }
});

您可以发布代码吗?您可能使用相同的变量来显示每行的数量,但是如果没有代码,就不可能说是,如果没有代码,我们无法确定您需要什么以及您面临的问题。后期编辑………@Ajay Rlogical请立即检查这不是关于滚动问题,但请尝试检查此代码。我想这会解决你的问题。你的价值观将保持不变。