RecyclerView购物车适配器

public class MyRecAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {

    private Context context;
    private List<ResultBean.DataBean.ListBean> list;
    private Map<String,String> map=new HashMap<>();

    public MyRecAdapter(Context context) {
        this.context = context;
    }

    //设置数据并更新显示
    public void setData(ResultBean resultBean){
        if(list==null){
            list=new ArrayList<>();
        }
        //第一层遍历商家
        for (ResultBean.DataBean shop:resultBean.getData()){
            map.put(shop.getSellerid(),shop.getSellerName());
            //第二层遍历商品
            for (int i=0;i<shop.getList().size();i++){
                list.add(shop.getList().get(i));
            }
        }
        setFirst(list);
        notifyDataSetChanged();
    }

    public void setFirst(List<ResultBean.DataBean.ListBean> list){
        if(list.size()>0){
            list.get(0).setIsFirst(1);
            for (int i=1;i<list.size();i++){
                //如果和前一个商品是同一家商店的
                if(list.get(i).getSellerid()==list.get(i-1).getSellerid()){
                    list.get(i).setIsFirst(2);
                }else{
                    //设置成1显示商铺
                    list.get(i).setIsFirst(1);
                    //如果当前条目选中,把当前的商铺也选中
                   if(list.get(i).isItem_check()){
                        list.get(i).setShop_check(list.get(i).isItem_check());
                    }
                }
            }
        }
    }



    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view=View.inflate(context, R.layout.recycler_car_item,null);
        MyShopViewHolder myShopViewHolder=new MyShopViewHolder(view);
        return myShopViewHolder;
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {
        final MyShopViewHolder myShopViewHolder= (MyShopViewHolder) holder;
        if(list.get(position).getIsFirst()==1){
                    myShopViewHolder.shop_checkbox.setVisibility(View.VISIBLE);
                    myShopViewHolder.shop_name.setVisibility(View.VISIBLE);
                    //设置shop_checkbox的选中状态
                    myShopViewHolder.shop_checkbox.setChecked(list.get(position).isShop_check());
                    myShopViewHolder.shop_name.setText(map.get(String.valueOf(list.get(position).getSellerid())));
            }else{
            myShopViewHolder.shop_checkbox.setVisibility(View.GONE);
            myShopViewHolder.shop_name.setVisibility(View.GONE);
        }
        myShopViewHolder.item_checkbox.setChecked(list.get(position).isItem_check());
        String[] split=list.get(position).getImages().split("\\|");
        Glide.with(context).load(split[0]).into(myShopViewHolder.item_icon);
        myShopViewHolder.item_name.setText(list.get(position).getTitle());
        myShopViewHolder.item_price.setText(list.get(position).getPrice()+"");
        myShopViewHolder.customchange.setEditText(list.get(position).getNum());

        //商铺的checkbox点击事件
        myShopViewHolder.shop_checkbox.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                list.get(position).setShop_check(!myShopViewHolder.shop_checkbox.isChecked());
                for (int i=0;i<list.size();i++){
                    if(list.get(i).getSellerid()==list.get(position).getSellerid()){
                        list.get(i).setItem_check(list.get(position).isShop_check());
                    }
                }
                notifyDataSetChanged();
                sumList(list);
            }
        });

        //商品的点击事件
        myShopViewHolder.item_checkbox.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                list.get(position).setItem_check(!myShopViewHolder.item_checkbox.isChecked());
                for (int i=0;i<list.size();i++){
                    for (int j=0;j<list.size();j++){
                        if(list.get(i).getSellerid()==list.get(j).getSellerid()&!list.get(j).isItem_check()){
                                list.get(i).setShop_check(false);
                                break;
                        }else{
                            list.get(i).setShop_check(true);
                        }
                    }
                }
                notifyDataSetChanged();
                sumList(list);
            }
        });

        myShopViewHolder.item_rublish.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                list.remove(position);
                setFirst(list);
                sumList(list);
                notifyDataSetChanged();
            }
        });

        myShopViewHolder.customchange.setCustomListener(new CustomChangeNumView.CustomListener() {
            @Override
            public void jiajian(int count) {
                list.get(position).setNum(count);
                notifyDataSetChanged();
                sumList(list);
            }
        });
    }

    //计算总价
    private void sumList(List<ResultBean.DataBean.ListBean> list) {
        int allCount=0;
        float allMoney=0;
        boolean allCheck=true;
        for (int i=0;i<list.size();i++){
            if(list.get(i).isItem_check()){
                allCount+=list.get(i).getNum();
                allMoney+=list.get(i).getNum()*list.get(i).getPrice();
            }else{
                allCheck=false;
            }
        }
        updateListener.setTotal(allMoney,allCount,allCheck);

    }

    @Override
    public int getItemCount() {
        return list==null?0:list.size();
    }

    class MyShopViewHolder extends RecyclerView.ViewHolder{
        SmoothCheckBox shop_checkbox;
        TextView shop_name;
        SmoothCheckBox item_checkbox;
        ImageView item_icon;
        TextView item_name;
        TextView item_price;
        ImageView item_rublish;
        CustomChangeNumView customchange;
        public MyShopViewHolder(View itemView) {
            super(itemView);
            shop_checkbox=itemView.findViewById(R.id.shop_checkbox);
            shop_name=itemView.findViewById(R.id.shop_name);
            item_checkbox=itemView.findViewById(R.id.item_checkbox);
            item_icon=itemView.findViewById(R.id.item_icon);
            item_name=itemView.findViewById(R.id.item_name);
            item_price=itemView.findViewById(R.id.item_price);
            item_rublish=itemView.findViewById(R.id.item_rublish);
            customchange=itemView.findViewById(R.id.customchange);
        }
    }

    UpdateListener updateListener;

    public void setUpdateListener(UpdateListener updateListener){
        this.updateListener=updateListener;
    }

    public interface UpdateListener{
        void setTotal(float allMoney,int allCount,boolean allCheck);
    }

    //全选的方法
    public void selectAll(boolean isCheckAll){
        for (int i=0;i<list.size();i++){
            list.get(i).setItem_check(isCheckAll);
            list.get(i).setShop_check(isCheckAll);
        }
        notifyDataSetChanged();
        sumList(list);
    }

猜你喜欢

转载自blog.csdn.net/owen_bland/article/details/80186243