android简单一级购物车

Activitymain。xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <android.support.v7.widget.RecyclerView
        android:id="@+id/shopcar_RecyclerView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"/>
    <!--底部悬浮-->
    <LinearLayout
        android:id="@+id/rl_bottom"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_alignParentBottom="true"
        android:orientation="horizontal">

        <LinearLayout
            android:id="@+id/layout_coll"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="5"
            android:gravity="center">

            <CheckBox
                android:id="@+id/cb_checkAll"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="全选"
                />

        </LinearLayout>

        <LinearLayout
            android:id="@+id/layout_shopping_cart"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="15"
            android:orientation="horizontal"
            android:gravity="center_vertical"
            >
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="合计:¥"
                android:layout_marginLeft="20dp"
                />
            <TextView
                android:id="@+id/tv_total"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="¥0.0"
                android:textSize="17sp"
                android:textColor="#CF2424"
                />

        </LinearLayout>

        <TextView
            android:id="@+id/tv_goBuy"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="5"
            android:gravity="center"
            android:text="去结算"
            android:textColor="#ffffff"
            android:textSize="15sp" />

    </LinearLayout>
</LinearLayout>

shopcar_item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="20dp"
    android:orientation="vertical">

    <LinearLayout
        android:id="@+id/bottom_wrapper"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:background="#f0f"
        android:weightSum="1"
        android:orientation="vertical"
        >

        <TextView
            android:id="@+id/tv_delShop"
            android:layout_width="80dp"
            android:layout_height="match_parent"
            android:layout_centerVertical="true"
            android:layout_gravity="center"
            android:background="#FF5F71"
            android:gravity="center"
            android:text="删除"
            android:textColor="#fff"
            android:textSize="20dp" />
        <!--你要显示的按钮-->
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        >
        <CheckBox
            android:id="@+id/cb_check"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            />
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:padding="10dp"
            android:layout_marginRight="10dp">
            <ImageView
                android:id="@+id/img_shop_pic"
                android:layout_width="100dp"
                android:layout_height="100dp"
                android:layout_gravity="center_vertical"
                />
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:layout_marginLeft="10dp"
                >
                <TextView
                    android:id="@+id/tv_shop_name"
                    android:layout_width="match_parent"
                    android:layout_height="70dp"
                    android:text="睡不醒的王荣琦"
                    android:maxLines="3"
                    android:maxEms="25"
                    android:ellipsize="end"
                    android:textSize="16sp" />
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="horizontal"
                    >
                    <TextView
                        android:id="@+id/tv_shop_price"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="16sp"
                        android:textColor="#CF2424"
                        android:text="¥520.00"
                        android:layout_gravity="center_vertical"
                        android:layout_weight="1"
                        />
                    <TextView
                        android:id="@+id/tv_subnum"
                        android:layout_width="30dp"
                        android:layout_height="wrap_content"
                        android:padding="10dp"
                        android:text="-"
                        />
                    <TextView
                        android:id="@+id/tv_num"
                        android:layout_width="40dp"
                        android:layout_height="wrap_content"
                        android:padding="10dp"
                        android:text="2"
                        android:gravity="center"
                        android:background="#2222"
                        />
                    <TextView
                        android:id="@+id/tv_addnum"
                        android:layout_width="30dp"
                        android:layout_height="wrap_content"
                        android:padding="10dp"
                        android:text="+"
                        />
                </LinearLayout>
            </LinearLayout>
        </LinearLayout>
    </LinearLayout>
</LinearLayout>

ActivityMain.java

package com.example.myapplication.activity;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.ExpandableListView;
import android.widget.TextView;
import android.widget.Toast;

import com.example.myapplication.R;
import com.example.myapplication.adapter.MyAdapter;
import com.example.myapplication.bean.Result;
import com.example.myapplication.bean.UserEntity;
import com.example.myapplication.bean.Users;
import com.example.myapplication.core.DataCall;
import com.example.myapplication.precenter.ListPrecemter;

import java.util.ArrayList;
import java.util.List;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;

public class MainActivity extends AppCompatActivity {
    @BindView(R.id.shopcar_RecyclerView)
    RecyclerView mXRecyclerView;
    @BindView(R.id.cb_checkAll)
    CheckBox checkAll;
    @BindView(R.id.tv_total)
    TextView tv_total;
    @BindView(R.id.tv_goBuy)
    TextView tv_goBuy;
    MyAdapter myAdapter;
    List<Users> result;
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);
        ListPrecemter listPrecemter=new ListPrecemter(new ListData());
        listPrecemter.reqeust("鞋",1,10);
    }
    private class ListData implements DataCall<Result<List<Users>>>{
        @Override
        public void success(Result<List<Users>> data) {
            if (data.getStatus().equals("0000")){
                result = data.getResult();
                LinearLayoutManager manager=new LinearLayoutManager(MainActivity.this);
                mXRecyclerView.setLayoutManager(manager);
                myAdapter=new MyAdapter(MainActivity.this,result);
                mXRecyclerView.setAdapter(myAdapter);
                myAdapter.setOnShopItemClick(new MyAdapter.OnShopItemClick() {
                    @Override
                    public void checkBoxClick(View view, int i) {
                        if (result.get(i).isFlag()) {
                            result.get(i).setFlag(false);
                            checkAll.setChecked(false);
                        }else {
                            result.get(i).setFlag(true);
                        }
                        getTotal();
                        myAdapter.notifyDataSetChanged();
                    }

                    @Override
                    public void subItemClick(View view, int position) {
                        int count = result.get(position).getSaleNum();
                        if(count<=1){
                            Toast.makeText(MainActivity.this, "呀,不能再少啦!", Toast.LENGTH_SHORT).show();
                        }else {
                            count--;
                            result.get(position).setSaleNum(count);
                            if(result.get(position).isFlag()){
                                getTotal();
                            }
                        }
                        myAdapter.notifyDataSetChanged();
                    }

                    @Override
                    public void addItemClick(View view, int position) {
                        int count = result.get(position).getSaleNum();
                        count++;
                        result.get(position).setSaleNum(count);
                        if(result.get(position).isFlag()){
                            getTotal();
                        }
                        myAdapter.notifyDataSetChanged();
                    }
                });
            }
        }
        @Override
        public void fail(Result result) {

        }
    }

    private void getTotal() {
        double total =0;
        int num =0;
        for (int i = 0; i < myAdapter.getItemCount(); i++) {
            Users users = result.get(i);
            if (users.isFlag()){
                total += users.getPrice()*users.getSaleNum();
                num += users.getSaleNum();
            }
        }
        tv_total.setText(""+total);
        tv_goBuy.setText("去结算("+num+")");
    }
}

adapter.java

package com.example.myapplication.adapter;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.TextView;

import com.example.myapplication.R;
import com.example.myapplication.bean.Users;
import com.example.myapplication.view.AddSubLayout;
import com.facebook.drawee.view.SimpleDraweeView;
import com.squareup.picasso.Picasso;

import java.util.List;

import butterknife.OnClick;

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
    private Context context;
    private List<Users> list;
    private OnShopItemClick onShopItemClick;

    public MyAdapter(Context context, List<Users> list) {
        this.context = context;
        this.list = list;
    }
    public MyAdapter(OnShopItemClick onShopItemClick) {
        this.onShopItemClick = onShopItemClick;
    }
    public interface OnShopItemClick{
        void checkBoxClick(View view,int i);
        void subItemClick(View view,int position);
        void addItemClick(View view,int position);
    }
    public void setOnShopItemClick(OnShopItemClick onShopItemClick) {
        this.onShopItemClick = onShopItemClick;
    }

    @NonNull
    @Override
    public MyAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.shopcar_item, viewGroup, false);
        ViewHolder holder=new ViewHolder(view);
        return holder;
    }

    @Override
    public void onBindViewHolder(@NonNull MyAdapter.ViewHolder mViewHolder, final int i) {
        Picasso.with(context).load(list.get(i).getMasterPic()).into(mViewHolder.img_shop_pic);
        mViewHolder.tv_shop_name.setText(list.get(i).getCommodityName());
        mViewHolder.tv_shop_price.setText("¥"+list.get(i).getPrice());
        mViewHolder.tv_num.setText(list.get(i).getSaleNum()+"");
        boolean flag = list.get(i).isFlag();
        if(flag){
            mViewHolder.cb_check.setChecked(true);
        }else {
            mViewHolder.cb_check.setChecked(false);
        }
        mViewHolder.cb_check.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                onShopItemClick.checkBoxClick(view,i);
            }
        });
        //加减数量点击事件
        mViewHolder.tv_subnum.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                onShopItemClick.subItemClick(view,i);
            }
        });
        mViewHolder.tv_addnum.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                onShopItemClick.addItemClick(view,i);
            }
        });
        //删除购物车数据
        mViewHolder.tv_delShop.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                list.remove(i);
                notifyDataSetChanged();
            }
        });
    }

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

    public class ViewHolder extends RecyclerView.ViewHolder {
        private CheckBox cb_check;
        private ImageView img_shop_pic;
        private TextView tv_shop_name;
        private TextView tv_shop_price;
        private TextView tv_subnum;
        private TextView tv_num;
        private TextView tv_addnum;
        private final TextView tv_delShop;
        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            cb_check = itemView.findViewById(R.id.cb_check);
            img_shop_pic = itemView.findViewById(R.id.img_shop_pic);
            tv_shop_name = itemView.findViewById(R.id.tv_shop_name);
            tv_shop_price = itemView.findViewById(R.id.tv_shop_price);
            tv_subnum = itemView.findViewById(R.id.tv_subnum);
            tv_num = itemView.findViewById(R.id.tv_num);
            tv_addnum = itemView.findViewById(R.id.tv_addnum);
            tv_delShop = itemView.findViewById(R.id.tv_delShop);
        }
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值