首页 > 解决方案 > 从 RecycleView 中删除项目

问题描述

我想从购物车中删除一个项目。在这种情况下,购物卡列表是RecycleView。当我仍在购物车活动中时,该项目已成功删除,但当我通过更改活动BottomNavigationView并返回购物车活动时,该项目再次出现。有人知道这个问题吗?我感谢任何答案,谢谢。

PS对不起英语不好


这是我的代码片段

holder.trashIcon.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View view) {
     mReceiptList.remove(holder.getAdapterPosition());
     notifyItemRemoved(holder.getAdapterPosition());
     notifyItemRangeChanged(holder.getAdapterPosition(), mReceiptList.size());
     holder.itemView.setVisibility(View.GONE);
     ((DaftarCartFragment) fragment).calculateTotalMin();
  }
});

更新

这是完整的代码,包括 mReceiptList 的用法

package tech.agronum.kitchenwaremobile.adapters;

import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;

import com.google.gson.Gson;

import org.w3c.dom.Text;

import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.List;

import tech.agronum.kitchenwaremobile.R;
import tech.agronum.kitchenwaremobile.fragments.cart.DaftarCartFragment;
import tech.agronum.kitchenwaremobile.models.Mobile.Product.Product;
import tech.agronum.kitchenwaremobile.models.Mobile.Product.Receipt;

public class RecycleViewCartAdapter extends RecyclerView.Adapter<RecycleViewCartAdapter.RecyclerVH> {

    public static List<Receipt> mReceiptList = null;

    Product inventory;
    String[] spacecrafts;
    Context context;
    FragmentManager fragmentManager;
    private int add = 0;
    private int subtract = 0;
    Fragment fragment;
    SharedPreferences preferences;

    public RecycleViewCartAdapter(List<Receipt> receipt, FragmentManager _fragmentManager, Fragment _fragment) {
        mReceiptList = receipt;
        fragmentManager = _fragmentManager;
        fragment = _fragment;
    }

    // Fungsi Hitung
    public Integer getQuantityPrice(int i) {
        return mReceiptList.get(i).getQuantity() * mReceiptList.get(i).getPrice();
    }

    @NonNull
    @Override
    public RecyclerVH onCreateViewHolder(@NonNull ViewGroup parent, int i) {
        View v= LayoutInflater.from(parent.getContext()).inflate(R.layout.component_card_cart,parent,false);
        return new RecyclerVH(v);
    }

    @Override
    public void onBindViewHolder(@NonNull final RecyclerVH holder, int i) {
        final Receipt receipt = mReceiptList.get(i);
        final String id = receipt.getId().toString();

        String produkName = receipt.getName();
        String produkCode = receipt.getCode();
        Integer price = receipt.getPrice();
        Integer qty = receipt.getQuantity();
        String condition = receipt.getCondition();
        NumberFormat formatter = new DecimalFormat("#,###");

        if(receipt.getId() == 0){
            holder.produkName.setText("Data sudah terhapus atau tidak ada");
            holder.produkCode.setText("-");
            holder.price.setText("-");

        } else {
            try {
                holder.produkName.setText(produkName);
                holder.produkCode.setText(produkCode);
                holder.itemCondition.setText(condition);
                holder.itemQuantity.setText(qty.toString());
                holder.price.setText(formatter.format(price) + "");
            } catch (NullPointerException ne) {
                ne.printStackTrace();
            }
        }

        final int now = Integer.parseInt(holder.itemQuantity.getText().toString());

        holder.buttonPlus.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
//                int res;
//                add++;
//                res = now+ add;
//                holder.itemQuantity.setText(res + "");
                Integer current = Integer.parseInt(holder.itemQuantity.getText().toString());
                current = current + 1;
                holder.itemQuantity.setText(current.toString());
                receipt.setQuantity(current);
                ((DaftarCartFragment) fragment).calculateTotal();
            }
        });

        holder.buttonMinus.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
//                int res;
//                subtract++;
//                res = now - subtract;
//                holder.itemQuantity.setText(res + "");
                Integer current = Integer.parseInt(holder.itemQuantity.getText().toString());
                if(current>0) {
                    current = current - 1;
                }
                holder.itemQuantity.setText(current.toString());
                receipt.setQuantity(current);
                ((DaftarCartFragment) fragment).calculateTotalMin();
            }
        });

        holder.trashIcon.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                holder.itemView.setVisibility(View.GONE);
                ((DaftarCartFragment) fragment).calculateTotalMin();
                mReceiptList.remove(holder.getAdapterPosition());
                notifyItemRemoved(holder.getAdapterPosition());
                notifyItemRangeChanged(holder.getAdapterPosition(), mReceiptList.size());
            }
        });

    }

    @Override
    public int getItemCount() {
        int size = 0;
        try {
            size = mReceiptList.size();
        } catch (NullPointerException ne) {
            ne.printStackTrace();
            size = 0;
        } catch (Exception e) {
            e.printStackTrace();
            size = 0;
        }
        return size;
    }

    /*
    VIEWHOLDER CLASS
     */
    public class RecyclerVH extends RecyclerView.ViewHolder
    {
        Integer id;
        TextView produkName;
        TextView produkCode;
        TextView category;
        TextView warehouseCategory;
        TextView price;
        EditText itemQuantity;
        Button detailButton;
        TextView buttonPlus;
        TextView buttonMinus;
        TextView itemCondition;
        ImageView trashIcon;


        // ImageView imageView;

        public RecyclerVH(View itemView) {
            super(itemView);
            produkName = (TextView) itemView.findViewById(R.id.item_name);

            produkCode = (TextView) itemView.findViewById(R.id.product_code);

            category = (TextView) itemView.findViewById(R.id.product_category);

            warehouseCategory = (TextView) itemView.findViewById(R.id.product_warehouseCategory);

            price = (TextView) itemView.findViewById(R.id.product_price);

            itemQuantity = (EditText) itemView.findViewById(R.id.item_quantity);

            buttonPlus = (TextView) itemView.findViewById(R.id.item_quantity_button_plus);

            buttonMinus = (TextView) itemView.findViewById(R.id.item_quantity_button_minus);

            detailButton = (Button) itemView.findViewById(R.id.product_detail_button);

            itemCondition = (TextView) itemView.findViewById(R.id.item_condition);

            trashIcon = (ImageView) itemView.findViewById(R.id.trash_icon);
            //imageView = (ImageView)itemView.findViewById(R.id.productImage);
        }
    }


}

标签: javaandroidandroid-studio

解决方案


推荐阅读