簡體   English   中英

android recyclerview 在 object 中恢復 state

[英]android recyclerview restoring state in object

該應用程序功能類似於購物車。 用戶可以通過單擊相應的按鈕來添加產品和增加/減少數量。 默認情況下,數量值設置為 1。每當用戶將新產品添加到 recyclerview 時,我都會遇到問題,之前的產品數量也更改為 1。如何避免這種情況? 如何恢復 object 中的狀態(遞增/遞減值)?

 @Override
public void onBindViewHolder(@NonNull RVOrderBrdAdapter.RVViewHolder holder, int position) {
    //getting the product of the specified position
    OrderBrdDataModel product = filteredList.get(position);

    //binding the data with the viewholder views
    double org_p = product.getBrdprice();
    holder.brd_value.setText(String.valueOf(product.getBrdprice()));
    holder.brd_product.setText(product.getBrdname());
    holder.brd_quantity.setText("1");

    holder.brd_increment.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            number = Integer.parseInt(""+holder.brd_quantity.getText().toString());
            if(holder.brd_quantity.getText().toString().equals("")){
                Toast.makeText(v.getContext(), "Quantity cannot be empty", Toast.LENGTH_SHORT).show();
            }else if(number >=9999){
                Toast.makeText(v.getContext(), "Quantity cannot be greater than 9999", Toast.LENGTH_SHORT).show();

            }else{
                number++;
            }

            holder.brd_quantity.setText(""+number);
            double iw = Double.parseDouble(String.format("%.2f",(org_p*number)));
            holder.brd_value.setText(String.valueOf (iw));
        }
    });

    holder.brd_decrement.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            number = Integer.parseInt(""+holder.brd_quantity.getText().toString());
            if(holder.brd_quantity.getText().toString().equals("")){
                Toast.makeText(v.getContext(), "Quantity cannot be empty", Toast.LENGTH_SHORT).show();
            }else if(number<=0){
                Toast.makeText(v.getContext(), "Quantity cannot be less than 0", Toast.LENGTH_SHORT).show();
                number = 0;
            }else {
                number--;

            }
            holder.brd_quantity.setText(""+number);
            double dw = Double.parseDouble(String.format("%.2f",(org_p*number)));
            holder.brd_value.setText(String.valueOf(dw));
        }
    });

您可以將數量添加到 OrderBrdDataModel 或將 OrderBrdDataModel 包裝在 OrderBrdDataModelWithQuantity 之類的東西中。 在 OnBindViewHolder 中使用此變量的數量並確保更新 brd_increment/decrement 中的數量值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM