购物车点击事件

这篇博客详细介绍了如何在购物车页面实现点击事件处理。通过创建`ShouFragment`继承自`Fragment`并实现接口`ContarInterfac.shouFragmentFace`,设置点击事件监听。博客中提到了`RecyclerView`的使用,以及两个不同的适配器`WaiAdapter`和`LiAdaoter`,分别用于外部和内部列表的展示,同时涉及到`CheckBox`的交互。列表数据存储在`ArrayList`中并通过`MyBean.DataBean`和`MyBean.DataBean.ListBean`进行数据绑定。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

展示页面
public class ShouFragment extends Fragment implements ContarInterfac.shouFragmentFace {
ContarInterfac.PresenterFara presenterFara;
TextView text_zong;
RecyclerView recyclerview_1;
public CheckBox checkBox_1;
WaiAdapter adapter;
public List<MyBean.DataBean> list = new ArrayList<>();

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.shou_fragment, container, false);
    text_zong = view.findViewById(R.id.text_zong);
    recyclerview_1 = view.findViewById(R.id.recyclerview_1);
    checkBox_1 = view.findViewById(R.id.checkbox_1);
    return view;
}

@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
    layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
    recyclerview_1.setLayoutManager(layoutManager);
    adapter = new WaiAdapter(list, getContext(), this);
    recyclerview_1.setAdapter(adapter);
    presenterFara = new MyPersenter<>(this);
    presenterFara.getDate();

    checkBox_1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //获取总价
            int sum = 0;
            //获取当前checbox  状态
            boolean b = checkBox_1.isChecked();
            //checbox是true的时候
            if (b) {
                //循环遍历list
                for (int i = 0; i < list.size(); i++) {
                    //每个list里面的checde 为true
                    list.get(i).waichecde = b;
                    //遍历字条目里的list
                    for (int j = 0; j < list.get(i).getList().size(); j++) {
                        //每个字条目list里面的checde 为true
                        list.get(i).getList().get(j).lichecde = b;
                        //在为true的里面获取价钱
                        double price = list.get(i).getList().get(j).getPrice();
                        //获取数量
                        int num = list.get(i).getList().get(j).getNum();
                        //计算总数
                        sum += price * num;
                    }
                }

            } else {
                //循环遍历list
                for (int i = 0; i < list.size(); i++) {
                    //每个list里面的checde 为false
                    list.get(i).waichecde = b;
                    for (int j = 0; j < list.get(i).getList().size(); j++) {
                        //每个字条目list里面的checde 为false
                        list.get(i).getList().get(j).lichecde = b;
                    }
                    //总价设置为0;
                    sum = 0;
                }

            }
            //给总价赋值
            text_zong.setText(sum + "");
            //刷新适配器
            adapter.notifyDataSetChanged();
        }

    });

    //接口回调
    adapter.setMyCallBace(new WaiAdapter.MyCallBace() {
        @Override
        //回调适配器里面的方法
        public void setWaice(List<MyBean.DataBean> list_1) {
            //定义判断一个值
            int ss = 0;
            //定义总价值
            int sum = 0;
            //循环回调集合
            for (int i = 0; i < list_1.size(); i++) {
                //判断是否是选中状态
                if (list_1.get(i).waichecde) {
                    //选中的判断之+1
                    ss++;
                    //循环回调集合里的字条目
                    for (int j = 0; j < list_1.get(i).getList().size(); j++) {
                        //获取价钱
                        double price = list.get(i).getList().get(j).getPrice();
                        //获取数量
                        int num = list.get(i).getList().get(j).getNum();
                        //计算总价
                        sum += price * num;
                    }
                } else {
                    //不选中状态
                    //循环回调集合里的字条目
                    for (int j = 0; j < list_1.get(i).getList().size(); j++) {
                        //判断字条目的选中状态
                        if (list_1.get(i).getList().get(j).lichecde) {
                            //获取价钱
                            double price = list.get(i).getList().get(j).getPrice();
                            //获取数量
                            int num = list.get(i).getList().get(j).getNum();
                            //计算总价
                            sum += price * num;
                        }
                    }
                }
            }
            //判断字条目是否都选中
            if (ss == list_1.size()) {
                //设置为当前checbox为true
                checkBox_1.setChecked(true);
            } else {
                //设置为当前checbox为false
                checkBox_1.setChecked(false);
            }
            //给总价赋值
            text_zong.setText(sum + "");
            //刷新适配器
            adapter.notifyDataSetChanged();
        }
    });

}

@Override
public void showDate(Object obj) {

    MyBean myBean = (MyBean) obj;

    list.addAll(myBean.getData());
    list.remove(0);
    adapter.notifyDataSetChanged();

}

}

外面适配器

public class WaiAdapter extends RecyclerView.Adapter<WaiAdapter.Holder_1>{
List<MyBean.DataBean> list;
Context context;
MyCallBace myCallBace;
ShouFragment shouFragment;

public WaiAdapter(List<MyBean.DataBean> list, Context context,ShouFragment shouFragment) {
    this.list = list;
    this.context = context;
    this.shouFragment=shouFragment;
}

@NonNull
@Override
public Holder_1 onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
    View view =LayoutInflater.from(context).inflate(R.layout.wai_layout,null);
    return new Holder_1(view);
}

@Override
public void onBindViewHolder(@NonNull final Holder_1 holder_1, final int i) {
    String neme = list.get(i).getSellerName();
    holder_1.text_name.setText(neme);

    LinearLayoutManager layoutManager = new LinearLayoutManager(context);
    layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
    holder_1.recyclerview_2.setLayoutManager(layoutManager);
    LiAdaoter adapter = new LiAdaoter(list.get(i).getList(), context,shouFragment );
    holder_1.recyclerview_2.setAdapter(adapter);
    holder_1.checkbox_2.setChecked(list.get(i).waichecde);
    //当前checkbox 的点击事件
    holder_1.checkbox_2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //获取当前checkbox 的状态
            boolean b = holder_1.checkbox_2.isChecked();
            //给当前checkbox设置状态
            list.get(i).waichecde=b;
            //循环字条目中的长度
            for (int j = 0; j <list.get(i).getList().size() ; j++) {
                //给字条目中的checbox设置为当前状态
                list.get(i).getList().get(j).lichecde=b;

            }
            //接口传值整个list;
            myCallBace.setWaice(list);
        }
    });
    //调用字条目里的接口
    adapter.setMyCallBace(new LiAdaoter.MyCallBace() {
        @Override
        //调用字条目里的方法
        public void setWaice(List<MyBean.DataBean.ListBean> list_2) {
            //定义一个判断值
            int ss =0;
            //循环遍穿过list集合里的数量
            for (int j = 0; j <list_2.size() ; j++) {
                //如果为选中状态
                if(list_2.get(j).lichecde){
                    //值++
                    ss++;
                }

            }
            //判断之和穿过来的长度一致,那就为true
            if(ss==list_2.size()){
                //设置当前checbox 为ture
                holder_1.checkbox_2.setChecked(true);
                //当前boolean值true
                list.get(i).waichecde=true;
            }else{
                //设置当前checbox 为false
                holder_1.checkbox_2.setChecked(false);
                //当前boolean值false
                list.get(i).waichecde=false;
            }
            //回调接口
            myCallBace.setWaice(list);
        }

    });

}

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

public class Holder_1 extends RecyclerView.ViewHolder{
    CheckBox checkbox_2;
    TextView text_name;
    RecyclerView recyclerview_2;

    public Holder_1(@NonNull View itemView) {

        super(itemView);
        checkbox_2=itemView.findViewById(R.id.checkbox_2);
        text_name=itemView.findViewById(R.id.text_name);
        recyclerview_2=itemView.findViewById(R.id.recyclerview_2);
    }
}
public void  setMyCallBace(MyCallBace myCallBace){
    this.myCallBace=myCallBace;
}

public  interface  MyCallBace{
    public void setWaice(List<MyBean.DataBean> list);
}

}

//里面适配器
public class LiAdaoter extends RecyclerView.Adapter<LiAdaoter.Holder_2> {
List<MyBean.DataBean.ListBean> list;
Context context;
ShouFragment shouFragment;
private MyCallBace myCallBace;

public LiAdaoter(List<MyBean.DataBean.ListBean> list, Context context, ShouFragment shouFragment) {
    this.list = list;
    this.context = context;
    this.shouFragment = shouFragment;
}

@NonNull
@Override
public Holder_2 onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
    View view =LayoutInflater.from(context).inflate(R.layout.li_layout,null);
    return new Holder_2(view);
}

@Override
public void onBindViewHolder(@NonNull final Holder_2 holder_2, final int i) {
    double price = list.get(i).getPrice();
    String title = list.get(i).getTitle();
    String url = list.get(i).getImages();
    final int num = list.get(i).getNum();
    holder_2.text_shu.setText(num+"");
    holder_2.text_title.setText(title);
    holder_2.text_price.setText(price+"");
    Glide.with(context).load(url).into(holder_2.image_view);
    holder_2.checkbox_3.setChecked(list.get(i).lichecde);
    //当前checkbox的点击事件
    holder_2.checkbox_3.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //获取当前checkbox 的状态
            boolean b = holder_2.checkbox_3.isChecked();
            //给当前checkbox设置状态
            list.get(i).lichecde=b;
            //接口回调传值
           myCallBace.setWaice(list);
        }
    });
    //加的点击事件
    holder_2.text_jia.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            int n = list.get(i).getNum();
            n++;
            list.get(i).setNum(n);
            holder_2.text_shu.setText(n+"");
            myCallBace.setWaice(list);
        }
    });
    //减的点击事件
    holder_2.text_jian.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            int n = list.get(i).getNum();

            if(n==1){
               return;
            }
            n--;
            list.get(i).setNum(n);
            holder_2.text_shu.setText(n+"");
            myCallBace.setWaice(list);
        }
    });
}

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

public class Holder_2 extends RecyclerView.ViewHolder{
    ImageView image_view;
    TextView text_jia,text_jian,text_shu,text_title,text_price;

    CheckBox checkbox_3;
    public Holder_2(@NonNull View itemView) {
        super(itemView);
        image_view  =itemView.findViewById(R.id.image_view);
        text_jia  =itemView.findViewById(R.id.text_jia);
        text_jian  =itemView.findViewById(R.id.text_jian);
        text_shu  =itemView.findViewById(R.id.text_shu);
        text_title  =itemView.findViewById(R.id.text_title);
        text_price  =itemView.findViewById(R.id.text_price);
        checkbox_3  =itemView.findViewById(R.id.checkbox_3);


    }
}

public void  setMyCallBace(MyCallBace myCallBace){
    this.myCallBace=myCallBace;
}

public  interface  MyCallBace{
    public void setWaice(List<MyBean.DataBean.ListBean> list);
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值