android购物车简单不使用自定义View

project的maven仓库

maven { url 'https://jitpack.io' }

左滑删除的依赖

implementation 'com.github.mcxtzhang:SwipeDelMenuLayout:V1.2.1'

购物车的fragmnet

public class frag_03 extends BaseFrament implements XRecyclerView.LoadingListener {
    private List<carbean> list;
    CarPrecenter carPrecenter;
    CarAdapter carAdapter;
    UserDataDao userDataDao;
    List<carbean> OList;
    UserData userData;
    TextView cartTotal;
    CheckBox cartCheckall;
    TextView cartBtnBuy;
    XRecyclerView xRecyclerView;
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view=inflater.inflate(R.layout.item_03,container,false);
        cartTotal=view.findViewById(R.id.cart_total);
        cartCheckall=view.findViewById(R.id.cart_checkall);
        cartBtnBuy=view.findViewById(R.id.cart_btn_buy);
        xRecyclerView=view.findViewById(R.id.xrecyclerview);
        ButterKnife.bind(getActivity());
        view.findViewById(R.id.cart_checkall).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                switch (v.getId()) {
                    case R.id.cart_checkall://全选

                        break;
                    case R.id.cart_btn_buy:
                        break;
                }
            }
        });
        view.findViewById(R.id.cart_btn_buy).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                switch (v.getId()) {
                    case R.id.cart_checkall://全选

                        break;
                    case R.id.cart_btn_buy:
                        break;
                }
            }
        });
        carPrecenter=new CarPrecenter(new CarData());
        userDataDao=DaoMaster.newDevSession(getActivity(),UserDataDao.TABLENAME).getUserDataDao();
        userData = userDataDao.loadByRowId(1);
        OList=new ArrayList<>();
        long userId = userData.getUserId();
        String sessionId = userData.getSessionId();
        carPrecenter.reqeust((int)userId,sessionId);
        carAdapter = new CarAdapter(getActivity());
        xRecyclerView.setAdapter(carAdapter);
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false);
        xRecyclerView.setLayoutManager(linearLayoutManager);
        xRecyclerView.setLoadingMoreEnabled(true);// 下拉加载更多
        xRecyclerView.setLoadingListener(this);
        xRecyclerView.setNestedScrollingEnabled(false);
        return view;
    }
    @Override
    public void onRefresh() {
        UserData userData = userDataDao.loadByRowId(1);
        String sessionId = userData.getSessionId();
        int userId =(int)userData.getUserId();
        if (carPrecenter.isRunning()){
            xRecyclerView.refreshComplete();
            xRecyclerView.loadMoreComplete();
            return;
        }
        list.clear();
        //刷新
        xRecyclerView.refreshComplete();
        //重新请求网络数据
        carPrecenter.reqeust(userId,sessionId);
        carAdapter.notifyDataSetChanged();
    }
    @Override
    public void onLoadMore() {
    }
    private class CarData implements DataCall<Result<List<carbean>>> {
        @Override
        public void success(Result<List<carbean>> result) {
            if (result.getStatus().equals("0000")){
                list = result.getResult();
                cartCheckall.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        for (carbean cartBean : list) {
                            cartBean.setFlag(cartCheckall.isChecked());
                        }
                        carAdapter.notifyDataSetChanged();
                        cartTotal.setText("¥:"+getPrice(list));
                    }
                });
                carAdapter.getOnClick(new CarAdapter.SumCall() {
                    @Override
                    public void onClickJiaOrJian(List<carbean> list) {
                        cartTotal.setText("¥:"+getPrice(list));
                    }
                });
                carAdapter.getOnSelect(new CarAdapter.SelectCall() {
                    @Override
                    public void onAllOn(List<carbean> list) {
                        boolean flag = true;
                        for (carbean cartBean : list) {
                            if (!cartBean.isFlag()){
                                flag=false;
                            }
                        }
                        cartTotal.setText("¥:"+getPrice(list));
                        cartCheckall.setChecked(flag);
                    }
                });
                carAdapter.addAll(result.getResult());
                carAdapter.notifyDataSetChanged();
            }
        }
        @Override
        public void fail(ApiException e) {
        }
    }
    public double getPrice(List<carbean> list) {
        double price = 0.0;
        for (carbean cartBean : list) {
            if (cartBean.isFlag()) {
                price += cartBean.getCount() * cartBean.getPrice();
            }
        }
        return price;
    }
    /**
     * 数量与选中状态发生改变时,商品价格发生改变
     */
}

购物车的xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginLeft="@dimen/dp_10"
    android:layout_marginRight="@dimen/dp_10">

    <com.jcodecraeer.xrecyclerview.XRecyclerView
        android:id="@+id/xrecyclerview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@id/bottom"
        android:layout_marginTop="@dimen/dp_20"
        android:layout_centerHorizontal="true">
    </com.jcodecraeer.xrecyclerview.XRecyclerView>
    <LinearLayout
        android:id="@+id/bottom"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="@dimen/dp_90">
        <CheckBox
            android:id="@+id/cart_checkall"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="全选"/>
        <TextView
            android:id="@+id/cart_total"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:textColor="#f90b0b"
            android:layout_height="wrap_content"
            android:layout_marginLeft="@dimen/dp_20"
            android:textSize="@dimen/sp_12"
            android:gravity="left"
            android:padding="@dimen/dp_5"
            android:text="合计:0.0"/>
        <TextView
            android:id="@+id/cart_btn_buy"
            android:layout_width="@dimen/dp_80"
            android:layout_height="@dimen/dp_40"
            android:gravity="center"
            android:background="#f20822"
            android:textColor="#fff"
            android:text="去结算"
            android:textSize="@dimen/sp_14"/>

    </LinearLayout>
</RelativeLayout>

购物车的Recyclerview的Adapter

public class CarAdapter extends RecyclerView.Adapter<CarAdapter.ViewHolder>{
    private Context context;
    private List<carbean> list;
    private SumCall sumCall;
    private SelectCall selectCall;

    public CarAdapter(Context context) {
        this.context = context;
        list = new ArrayList<>();
    }

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view = View.inflate(context,R.layout.shopping_item, null);
        ViewHolder viewHolder = new ViewHolder(view);

        return viewHolder;
    }

    @Override
    public void onBindViewHolder(@NonNull final ViewHolder viewHolder, final int i) {
        viewHolder.cart_item_image.setImageURI(Uri.parse(list.get(i).getPic()));
        viewHolder.cart_item_title.setText(list.get(i).getCommodityName());
        viewHolder.cart_item_price.setText("¥:" + list.get(i).getPrice());
        viewHolder.cart_item_num.setText("" + list.get(i).getCount());
        viewHolder.cart_item_jia.setText("+");
        viewHolder.cart_item_jian.setText("一");
        viewHolder.cart_item_cb.setChecked(list.get(i).isFlag());
        viewHolder.cart_item_cb.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                list.get(i).setFlag(viewHolder.cart_item_cb.isChecked());
                selectCall.onAllOn(list);
            }
        });

        viewHolder.cart_item_jia.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                list.get(i).setCount(list.get(i).getCount()+1);
                viewHolder.cart_item_num.setText("" + list.get(i).getCount());
                sumCall.onClickJiaOrJian(list);
            }
        });

        viewHolder.cart_item_jian.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (list.get(i).getCount()>1){
                    list.get(i).setCount(list.get(i).getCount()-1);
                    viewHolder.cart_item_num.setText("" + list.get(i).getCount());
                    sumCall.onClickJiaOrJian(list);
                }else {
                    Toast.makeText(context, "亲,不能再减啦!", Toast.LENGTH_SHORT).show();
                }
            }
        });
    }

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


    public void addAll(List<carbean> result) {
        if (result != null) {
            list.addAll(result);
        }
    }


    public class ViewHolder extends RecyclerView.ViewHolder {

        private final CheckBox cart_item_cb;
        private final SimpleDraweeView cart_item_image;
        private final TextView cart_item_title;
        private final TextView cart_item_price;
        private final TextView cart_item_jia, cart_item_num, cart_item_jian;

        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            cart_item_cb = itemView.findViewById(R.id.cart_item_cb);
            cart_item_image = itemView.findViewById(R.id.cart_item_image);
            cart_item_title = itemView.findViewById(R.id.cart_item_title);
            cart_item_price = itemView.findViewById(R.id.cart_item_price);
            cart_item_jia = itemView.findViewById(R.id.cart_item_jia);
            cart_item_jian = itemView.findViewById(R.id.cart_item_jian);
            cart_item_num = itemView.findViewById(R.id.cart_item_num);
        }
    }
    public void getOnClick(SumCall sumCall){
        this.sumCall = sumCall;
    }
    public interface SumCall{
        void onClickJiaOrJian(List<carbean> list);
    }
    public void getOnSelect(SelectCall selectCall){
        this.selectCall = selectCall;
    }
    public interface SelectCall{
        void onAllOn(List<carbean> list);
    }
}

购物车的recyclerview的条目

<?xml version="1.0" encoding="utf-8"?>
<com.mcxtzhang.swipemenulib.SwipeMenuLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:frseco="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginTop="@dimen/dp_10"
            android:layout_marginBottom="@dimen/dp_20"
            android:background="@drawable/shape_cart_item_bg"
            android:orientation="horizontal">
            <CheckBox
                android:id="@+id/cart_item_cb"
                android:layout_width="wrap_content"
                android:layout_height="@dimen/dp_26"
                android:layout_gravity="center_vertical"
                android:layout_marginLeft="@dimen/sp_14"
                android:layout_marginTop="@dimen/dp_8" />

            <com.facebook.drawee.view.SimpleDraweeView
                android:id="@+id/cart_item_image"
                android:layout_width="@dimen/dp_97"
                android:layout_height="@dimen/dp_97"
                android:layout_margin="@dimen/dp_8" />

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="@dimen/dp_97"
                android:layout_marginLeft="@dimen/dp_2"
                android:layout_marginTop="@dimen/dp_8"
                android:orientation="vertical">

                <TextView
                    android:id="@+id/cart_item_title"
                    android:layout_width="@dimen/dp_200"
                    android:layout_height="0dp"
                    android:layout_weight="1"
                    android:paddingLeft="@dimen/dp_5"
                    android:paddingTop="@dimen/dp_5"
                    android:text="aaaaaaa"
                    android:textSize="@dimen/sp_12" />

                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="0dp"
                    android:layout_weight="1"
                    android:orientation="horizontal">

                    <TextView
                        android:id="@+id/cart_item_price"
                        android:layout_width="0dp"
                        android:layout_height="match_parent"
                        android:layout_weight="2"
                        android:textSize="@dimen/sp_14"
                        android:gravity="bottom"
                        android:paddingLeft="@dimen/dp_5"
                        android:paddingBottom="@dimen/dp_5"
                        android:text="¥ 12"
                        android:textColor="#f50909"/>

                    <TextView
                        android:id="@+id/cart_item_jian"
                        android:layout_width="@dimen/dp_0"
                        android:layout_height="@dimen/dp_40"
                        android:layout_weight="1"
                        android:text="一"
                        android:gravity="center"
                        android:layout_gravity="center"
                        android:background="@drawable/shape_add_sub_layout"/>

                    <TextView
                        android:id="@+id/cart_item_num"
                        android:layout_width="@dimen/dp_0"
                        android:layout_height="@dimen/dp_40"
                        android:layout_weight="1"
                        android:text="2"

                        android:gravity="center"
                        android:layout_gravity="center"
                        android:background="@drawable/shape_add_sub_layout"/>

                    <TextView
                        android:id="@+id/cart_item_jia"
                        android:layout_width="@dimen/dp_0"
                        android:layout_height="@dimen/dp_40"
                        android:layout_weight="1"
                        android:text="+"
                        android:gravity="center"
                        android:layout_gravity="center"
                        android:background="@drawable/shape_add_sub_layout"
                        android:layout_marginRight="@dimen/dp_10"/>


                </LinearLayout>
            </LinearLayout>
        </LinearLayout>
    </RelativeLayout>
    <Button
        android:id="@+id/shopp_del"
        android:layout_width="@dimen/dp_25"
        android:layout_height="@dimen/dp_97"
        android:layout_alignParentRight="true"
        android:background="#f00"
        android:text="删除" />

</com.mcxtzhang.swipemenulib.SwipeMenuLayout>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值