京东二级购物车

package test.bawie.fangjd.model.adapter;

import android.content.Context;
import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.support.v7.app.AlertDialog;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

import com.squareup.picasso.Picasso;

import org.greenrobot.eventbus.EventBus;

import java.util.List;

import test.bawie.fangjd.AddDelView;
import test.bawie.fangjd.R;
import test.bawie.fangjd.model.bean.DeleteGoods;
import test.bawie.fangjd.model.bean.GoodsCarBean;
import test.bawie.fangjd.model.bean.ShanchuBean;
import test.bawie.fangjd.model.eventbus.MessageCounEvent;
import test.bawie.fangjd.model.eventbus.MessageEvent;
import test.bawie.fangjd.presenter.DeletePresenter;
import test.bawie.fangjd.presenter.ShanchuPresenter;
import test.bawie.fangjd.view.IDeleteListener;
import test.bawie.fangjd.view.IShanchuView;


public class MyExAdapter extends BaseExpandableListAdapter implements IShanchuView{
    private Context context;
    private List<GoodsCarBean.DataBean> groupList;
    private List<List<GoodsCarBean.DataBean.ListBean>> childList;
    private int count;
    private double price;
    private int numm;
    private int pid;
    private ShanchuPresenter shanchuPresenter;

    public MyExAdapter(Context context, List<GoodsCarBean.DataBean> grouplist, List<List<GoodsCarBean.DataBean.ListBean>> childlist) {
        this.context = context;
        this.groupList = grouplist;
        this.childList = childlist;
    }

    @Override
    public int getGroupCount() {
        return groupList.size();
    }

    @Override
    public int getChildrenCount(int groupPosition) {
        return childList.get(groupPosition).size();
    }

    @Override
    public Object getGroup(int groupPosition) {
        return groupList.get(groupPosition);
    }

    @Override
    public Object getChild(int groupPosition, int childPosition) {
        return childList.get(groupPosition).get(childPosition);
    }

    @Override
    public long getGroupId(int groupPosition) {
        return groupPosition;
    }

    @Override
    public long getChildId(int groupPosition, int childPosition) {
        return childPosition;
    }

    @Override
    public boolean hasStableIds() {
        return false;
    }

    @Override
    public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
        View view;
        GroupViewHolder holder;
        if (convertView == null) {
            holder = new GroupViewHolder();
            view = View.inflate(context, R.layout.adapter_addcar_group, null);
            holder.cb_group = view.findViewById(R.id.cb_group);
            holder.tv_shangjia = view.findViewById(R.id.tv_shangjia);
            view.setTag(holder);
        } else {
            view = convertView;
            holder = (GroupViewHolder) view.getTag();
        }
        //赋值
        GoodsCarBean.DataBean dataBean = groupList.get(groupPosition);
        holder.cb_group.setChecked(dataBean.isChecked());
        holder.tv_shangjia.setText(dataBean.getSellerName());
        //给group的checkbox设置点击事件
        holder.cb_group.setOnClickListener(new GroupCbOnClickListener(groupPosition));
        return view;
    }

    @Override
    public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
        View view;
        final ChildViewHolder holder;
        if (convertView == null) {
            holder = new ChildViewHolder();
            view = View.inflate(context, R.layout.adapter_addcar_child, null);
            holder.cb_child = view.findViewById(R.id.cb_child);
            holder.iv_child = view.findViewById(R.id.iv_child);
            holder.shan=view.findViewById(R.id.shanshan);
            holder.tv_child_name = view.findViewById(R.id.tv_child_name);
            holder.tv_child_price = view.findViewById(R.id.tv_child_price);
            holder.myadd = view.findViewById(R.id.myadd);
            holder.add = view.findViewById(R.id.add);
            holder.del = view.findViewById(R.id.del);
            holder.num = view.findViewById(R.id.num);
            holder.lldel = view.findViewById(R.id.lldel);
            view.setTag(holder);
        } else {
            view = convertView;
            holder = (ChildViewHolder) view.getTag();
        }
        shanchuPresenter = new ShanchuPresenter(context, this);

        //赋值
        final GoodsCarBean.DataBean.ListBean listBean = childList.get(groupPosition).get(childPosition);
        holder.cb_child.setChecked(listBean.isChecked());
        holder.tv_child_name.setText(listBean.getTitle());
        pid = listBean.getPid();
        holder.tv_child_price.setText("¥"+listBean.getPrice());
        String images = listBean.getImages();
        String[] imgArr = images.split("\\|");
        Picasso.with(context).load(imgArr[0]).into(holder.iv_child);
        holder.cb_child.setOnClickListener(new ChildCbOnClickListener(groupPosition, childPosition));
        numm = Integer.parseInt(holder.num.getText().toString().trim());
        holder.shan.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                shanchuPresenter.getWuxiian();
            }
        });
        holder.lldel.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View view) {
                AlertDialog alertDialog = new AlertDialog.Builder(context)
                        .setTitle(listBean.getTitle())
                        .setMessage("确定删除吗?")
                        .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialogInterface, int i) {
//                                Toast.makeText(context, "点了", Toast.LENGTH_SHORT).show();
                                SharedPreferences sharedPreferences = context.getSharedPreferences("User", Context.MODE_PRIVATE);
                                final int uid = sharedPreferences.getInt("uid", 0);
                                final String token = sharedPreferences.getString("token", "");
                                DeletePresenter deletePresenter = new DeletePresenter(new IDeleteListener() {
                                    @Override
                                    public int getUid() {
                                        return uid;
                                    }

                                    @Override
                                    public int getPid() {
                                        return listBean.getPid();
                                    }

                                    @Override
                                    public String getToken() {
                                        return token;
                                    }

                                    @Override
                                    public void getData(DeleteGoods bean) {
                                        Toast.makeText(context, bean.getMsg(), Toast.LENGTH_SHORT).show();

                                        notifyDataSetChanged();
                                    }
                                });
                                deletePresenter.lianjie();

                            }
                        })
                        .setNegativeButton("取消", null)
                        .show();

                return true;
            }
        });
        holder.myadd.setOnItemClick(new AddDelView.OnItemClick() {
            @Override
            public void onItemAddClick(int count) {
                if (listBean.isChecked()) {
                    MessageCounEvent messageCounEvent = new MessageCounEvent();
                    messageCounEvent.setPrice(listBean.getPrice());
                    messageCounEvent.setCount(1);
                    EventBus.getDefault().post(messageCounEvent);
                } else {
                    Toast.makeText(context, "请勾选", Toast.LENGTH_SHORT).show();
                    holder.myadd.setCount(1);
                }
                notifyDataSetChanged();
            }

            @Override
            public void onItemDelClick(int count) {
                if (listBean.isChecked()) {
                    MessageCounEvent messageCounEvent = new MessageCounEvent();
                    double price = listBean.getPrice();
                    messageCounEvent.setPrice(-price);
                    messageCounEvent.setCount(-1);
                    EventBus.getDefault().post(messageCounEvent);
                } else{
                    Toast.makeText(context, "请勾选", Toast.LENGTH_SHORT).show();
                    holder.myadd.setCount(1);
                }
                notifyDataSetChanged();
            }
        });
        return view;
    }

    @Override
    public boolean isChildSelectable(int groupPosition, int childPosition) {
        return true;
    }

    @Override
    public int uid() {
        return 509;
    }

    @Override
    public int pscid() {
        return pid;
    }

    @Override
    public void getBean(ShanchuBean shanchuBean) {
        String msg = shanchuBean.getMsg();
        Toast.makeText(context,msg,Toast.LENGTH_SHORT).show();
    }

    class GroupViewHolder {
        CheckBox cb_group;
        TextView tv_shangjia;
    }

    class ChildViewHolder {
        Button shan;
        CheckBox cb_child;
        ImageView iv_child;
        TextView tv_child_name;
        TextView tv_child_price;
        AddDelView myadd;
        TextView add;
        TextView del;
        TextView num;
        LinearLayout lldel;
    }

    class ChildCbOnClickListener implements View.OnClickListener {
        private int groupPosition;
        private int childPosition;

        public ChildCbOnClickListener(int groupPosition, int childPosition) {
            this.groupPosition = groupPosition;
            this.childPosition = childPosition;
        }

        @Override
        public void onClick(View v) {
            List<GoodsCarBean.DataBean.ListBean> listBeen = childList.get(groupPosition);
            GoodsCarBean.DataBean.ListBean childBean = listBeen.get(childPosition);
            if (v instanceof CheckBox) {
                CheckBox cb = (CheckBox) v;
                childBean.setChecked(cb.isChecked());
                //计算选中的商品数,并发送到主界面进行显示

                //判断该商家的所有商品的checkbox是否都选中
                if (isChildChecked(listBeen)) {
                    groupList.get(groupPosition).setChecked(true);
                    MessageCounEvent msgCount = new MessageCounEvent();
                    msgCount.setCount(1*numm);
                    msgCount.setPrice(childBean.getPrice()*numm);
                    EventBus.getDefault().post(msgCount);
                    MessageEvent msg = new MessageEvent();
                    msg.setFlag(isGroupChecked());
                    EventBus.getDefault().post(msg);
                    notifyDataSetChanged();
                } else {
                    groupList.get(groupPosition).setChecked(false);
                    MessageCounEvent messageCounEvent = new MessageCounEvent();
                    double price = childBean.getPrice();
                    messageCounEvent.setPrice(-childBean.getPrice()*numm);
                    messageCounEvent.setCount(-1*numm);
                    EventBus.getDefault().post(messageCounEvent);
                    MessageEvent msg = new MessageEvent();
                    msg.setFlag(false);
                    EventBus.getDefault().post(msg);
                    notifyDataSetChanged();
                    notifyDataSetChanged();
                }
            }

        }
    }

    /**
     * 判断该商家的所有商品的checkbox是否都选中
     *
     * @return
     */
    private boolean isChildChecked(List<GoodsCarBean.DataBean.ListBean> childBeen) {
        for (int i = 0; i < childBeen.size(); i++) {
            GoodsCarBean.DataBean.ListBean listBean = childBeen.get(i);
            if (!listBean.isChecked()) {
                return false;
            }
        }
        return true;
    }

    class GroupCbOnClickListener implements View.OnClickListener {
        private int groupPostion;

        public GroupCbOnClickListener(int groupPostion) {
            this.groupPostion = groupPostion;
        }

        @Override
        public void onClick(View v) {
            if (v instanceof CheckBox) {

                //多态,因为我是给checkbox设置的点击事件,所以可以强转成checkbox
                CheckBox cb = (CheckBox) v;
                //根据cb.isChecked()是否选中,给一级列的checkbox改变状态
                groupList.get(groupPostion).setChecked(cb.isChecked());
                List<GoodsCarBean.DataBean.ListBean> listBeen = childList.get(groupPostion);
                for (GoodsCarBean.DataBean.ListBean childBean : listBeen) {
                    childBean.setChecked(cb.isChecked());
                }
                //计算选中的商品数,并发送到主界面进行显示
                if(cb.isChecked()){
                    MessageCounEvent msgCount = new MessageCounEvent();

                    msgCount.setCount(listBeen.size());
                    for (int i = 0; i <listBeen.size() ; i++) {
                        msgCount.setPrice(listBeen.get(i).getPrice());
                    }



                    EventBus.getDefault().post(msgCount);
                }else {
                    MessageCounEvent msgCount = new MessageCounEvent();
                    msgCount.setCount(-listBeen.size());
                    for (int i = 0; i <listBeen.size() ; i++) {
                        msgCount.setPrice(-listBeen.get(i).getPrice());
                    }
                    EventBus.getDefault().post(msgCount);
                }
                MessageEvent msg = new MessageEvent();
                msg.setFlag(isGroupChecked());
                EventBus.getDefault().post(msg);
                notifyDataSetChanged();
            }
        }
    }

    /**
     * 判断其它的商家是否选中
     *
     * @return
     */
    private boolean isGroupChecked() {
        for (GoodsCarBean.DataBean groupBean : groupList) {
            if (!groupBean.isChecked()) {
                return false;
            }
        }
        return true;
    }

    /**
     * 主界面全选按钮的操作
     *
     * @param bool
     */
    public void allChecked(boolean bool) {
        for (int i = 0; i < groupList.size(); i++) {
            groupList.get(i).setChecked(bool);
            for (int j = 0; j < childList.get(i).size(); j++) {
                childList.get(i).get(j).setChecked(bool);
                childList.get(i).get(j).getPrice();
            }
        }
        if(bool){
            //计算选中的商品数,并发送到主界面进行显示
            MessageCounEvent msgCount = new MessageCounEvent();
            int totalCount = totalCount();
            msgCount.setCount(totalCount);
            msgCount.setPrice(totalprice());
            EventBus.getDefault().post(msgCount);
            notifyDataSetChanged();
        }else {
            MessageCounEvent msgCount = new MessageCounEvent();
            int i = totalCount();
            msgCount.setCount(0);
            double totalprice = totalprice();
            msgCount.setPrice(0);
            EventBus.getDefault().post(msgCount);
            notifyDataSetChanged();
        }


    }

    private int totalCount() {
        count = 0;
        for (int i = 0; i < groupList.size(); i++) {
            for (int j = 0; j < childList.get(i).size(); j++) {
                if (childList.get(i).get(j).isChecked()) {
                    //遍历所有的商品,只要是选中状态的,就加1
                    count++;
                }else {
                    count--;
                }
            }
        }
        return count;
    }


    private double totalprice() {
        price = 0.0;
        for (int i = 0; i < groupList.size(); i++) {
            for (int j = 0; j < childList.get(i).size(); j++) {
                if (childList.get(i).get(j).isChecked()) {
                    price+=childList.get(i).get(j).getPrice();
                }else {
                    price-=childList.get(i).get(j).getPrice();
                }
            }
        }
        return price;
    }

}
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
应用背景为变电站电力巡检,基于YOLO v4算法模型对常见电力巡检目标进行检测,并充分利用Ascend310提供的DVPP等硬件支持能力来完成流媒体的传输、处理等任务,并对系统性能做出一定的优化。.zip深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值