ShopCart

莫兴言
2023-12-01
public class FragmentShopCart extends Fragment implements IBannerMain,FragmentCartInter,View.OnClickListener {
    private LinearLayout linear_login;
    private Button cart_login;
    private RecyclerView tui_jian_recycler;
    private MyExpanableView my_expanable_view;
    private RelativeLayout relative_progress;
    private CheckBox cart_check_all;
    private TextView text_total;
    private TextView text_buy;
    private ImageView empty_cart_image;
    private Bannerpre bannerpre;
    private FragmentCartPresenter fragmentCartPresenter;
    private MyExpanableAdapter myExpanableAdapter;
    private Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            if (msg.what == 1) {
                CountPriceBean countPriceBean = (CountPriceBean) msg.obj;

                //设置显示
                text_total.setText("合计:¥"+countPriceBean.getPriceString());
                text_buy.setText("去结算("+countPriceBean.getCount()+")");
            }
        }
    };
    //创建一个集合,,,装的是去结算的时候 选中的所有商品的数据
    private ArrayList<CartBean.DataBean.ListBean> list_selected = new ArrayList<>();
    private CartBean cartBean;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view=inflater.inflate(R.layout.fragment_shopcar,container,false);
        linear_login = view.findViewById(R.id.linear_login);
        cart_login = view.findViewById(R.id.cart_login);
        tui_jian_recycler = view.findViewById(R.id.tui_jian_recycler);
        my_expanable_view = view.findViewById(R.id.my_expanable_view);
        relative_progress = view.findViewById(R.id.relative_progress);
        cart_check_all = view.findViewById(R.id.cart_check_all);
        text_total = view.findViewById(R.id.text_total);
        text_buy = view.findViewById(R.id.text_buy);
        empty_cart_image = view.findViewById(R.id.empty_cart_image);
        return view;
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        initChenJin();

        my_expanable_view.setGroupIndicator(null);

        //失去焦点....界面不是从recyclerView开始显示
        tui_jian_recycler.setFocusable(false);

        //2.为你推荐,,,只需要获取一次
        bannerpre = new Bannerpre(this);
        //调用p层里面的方法....https://www.zhaoapi.cn/ad/getAd
        bannerpre.getDate(JieKou.HOME_URL);
        fragmentCartPresenter = new FragmentCartPresenter(this);


        //全选 设置点击事件
        cart_check_all.setOnClickListener(this);
        text_buy.setOnClickListener(this);
    }


    @Override
    public void onResume() {
        super.onResume();
        initData();
    }

    @Override
    public void onHiddenChanged(boolean hidden) {
        super.onHiddenChanged(hidden);
        if (hidden) {
            //Log.e("----","隐藏");


        }else {
            //Log.e("----","显示");
            initChenJin();
            initData();

        }
    }

    private void initChenJin() {
        ChenJinUtil.setStatusBarColor(getActivity(), getResources().getColor(R.color.colorPrimaryDark));    }

    private void initData() {
        if (CommonUtils.getBoolean("isLogin")) {
            //请求购物车的数据...显示购物车
            my_expanable_view.setVisibility(View.VISIBLE);
            linear_login.setVisibility(View.GONE);

            //请求购物车的数据
            getCartData();


        }else {
            //登录按钮的显示
            linear_login.setVisibility(View.VISIBLE);
            my_expanable_view.setVisibility(View.GONE);

            //登录的点击事件
            cart_login.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Intent intent = new Intent(getActivity(),Login.class);
                    startActivity(intent);
                }
            });

        }
    }

    private void getCartData() {
        relative_progress.setVisibility(View.VISIBLE);

        //查询购物车的数据
        fragmentCartPresenter.getCartData(JieKou.SELECT_CART,CommonUtils.getString("uid"));
    }

    @Override
    public void IBannerSucces(final BannerBean bannerBean) {
        getActivity().runOnUiThread(new Runnable() {
            @Override
            public void run() {
                final BannerBean.TuijianBean tuijian = bannerBean.getTuijian();
                tui_jian_recycler.setLayoutManager(new StaggeredGridLayoutManager(2, OrientationHelper.VERTICAL));
                TuiJianAdapter tuiJianAdapter = new TuiJianAdapter(tuijian, getActivity());
                tui_jian_recycler.setAdapter(tuiJianAdapter);
                tuiJianAdapter.OnItemClick(new ClickListener() {
                    @Override
                    public void OnitemClicklistener(int position) {
                        int pid = tuijian.getList().get(position).getPid();
                        Intent intent = new Intent(getActivity(), Xiangqing.class);
                        intent.putExtra("pid",pid+"");
                        startActivity(intent);
                    }
                });
            }
        });
    }

    @Override
    public void getCartDataNull() {
        relative_progress.setVisibility(View.GONE);
        empty_cart_image.setVisibility(View.VISIBLE);
        Toast.makeText(getActivity(),"购物车为空,先去逛逛吧", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void getCartDataSuccess(final CartBean cartBean) {
        this.cartBean=cartBean;
        Log.d("======",cartBean.toString()+ "getCartDataSuccess: ");
        relative_progress.setVisibility(View.GONE);
        empty_cart_image.setVisibility(View.GONE);

        //显示购物车的数据....二级列表设置适配器

        //1.根据某一组里面所有子孩子是否选中,决定当前组是否选中
        try {
            for (int i =0;i<cartBean.getData().size();i++) {

                //遍历每一组的数据,,,设置是否选中...有所有的子孩子决定
                CartBean.DataBean dataBean = cartBean.getData().get(i);
                dataBean.setGroupChecked(isAllChildInGroupChecked(dataBean.getList()));
            }
        }catch (ArithmeticException e){

        }


        //2.根据所有的组是否选中,,,决定全选是否选中
        cart_check_all.setChecked(isAllGroupChecked(cartBean));

        //3.
        myExpanableAdapter = new MyExpanableAdapter(getActivity(), cartBean,handler,relative_progress,fragmentCartPresenter);
        my_expanable_view.setAdapter(myExpanableAdapter);

        //展开所有的每一组
        for (int i = 0;i<cartBean.getData().size();i++) {
            my_expanable_view.expandGroup(i);
        }

        //4.计算商品的总价和数量
        myExpanableAdapter.sendPriceAndCount();

        my_expanable_view.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
            @Override
            public boolean onChildClick(ExpandableListView expandableListView, View view, int groupPosition, int childPosition, long l) {

//                Toast.makeText(getActivity(),"点击了",Toast.LENGTH_SHORT).show();

    //跳转的是自己的详情页面
    Intent intent = new Intent(getActivity(), Login.class);
    //传递pid
                intent.putExtra("pid",cartBean.getData().get(groupPosition).getList().get(childPosition).getPid());
    startActivity(intent);

                return false;
}
        });
                }

    private boolean isAllChildInGroupChecked(List<CartBean.DataBean.ListBean> list) {
        for (int i =0;i<list.size();i++) {
            if (list.get(i).getSelected() == 0) {
                return false;
            }
        }
        return true;
    }

    private boolean isAllGroupChecked(CartBean cartBean) {
        for (int i=0;i<cartBean.getData().size();i++) {
            //组没有选中
            if (! cartBean.getData().get(i).isGroupChecked()) {
                return false;
            }
        }
        return true;

    }

    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.cart_check_all://全选
                //点击全选的时候,,,,根据全选的状态 改变购物车所有商品的选中状态

                myExpanableAdapter.setAllChildChecked(cart_check_all.isChecked());
                break;
            case R.id.text_buy://去结算
                //当显示的是去结算(0)....打击没有任何反应
                if ("去结算(0)".equals(text_buy.getText().toString())) {
                    return;
                }

                //选中了商品之后,,,跳转到确认订单页面
                Intent intent = new Intent(getActivity(), Querendingdan.class);
                //跳转传值...选中的商品的数据...传递一个集合过去...选中的商品的集合

                //先清空一下集合
                list_selected.clear();

                for (int i = 0;i<cartBean.getData().size();i++) {
                    Log.d("**********",cartBean+ "onClick: ");
                    List<CartBean.DataBean.ListBean> list = cartBean.getData().get(i).getList();
                    for (int j = 0;j<list.size();j++) {

                        //判断是否选中,,,如果选中存放到集合中去
                        if (list.get(j).getSelected() == 1) {
                            list_selected.add(list.get(j));
                        }
                    }
                }
                //通过intent把集合传到下一个页面
                intent.putExtra("list_selected",list_selected);

                startActivity(intent);
                break;
        }
    }
}s
 类似资料:

相关阅读

相关文章

相关问答