自做京东购物车

来源:互联网 发布:python游戏代码示例 编辑:程序博客网 时间:2024/04/27 17:08

接口:

public interface Check {    void checkli(int itemnum);}
public interface OnItemClickListener {    void onItemClick(View view, int position);}

两个Adapter:
1.shopAda[ter
package test.bwie.shopcar.Adapter;import android.content.Context;import android.content.DialogInterface;import android.support.v7.app.AlertDialog;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import android.view.View;import android.view.ViewGroup;import android.widget.CheckBox;import android.widget.TextView;import android.widget.Toast;import java.util.List;import java.util.Map;import test.bwie.shopcar.OnItemClickListener;import test.bwie.shopcar.R;import test.bwie.shopcar.bean.Check;import test.bwie.shopcar.bean.ShopCar;/** * Created by 蒋六六 on 2017/10/18. */public class ShopAdapter extends RecyclerView.Adapter<ShopAdapter.CarAdapter> {    private List<ShopCar.DataBean> data;    private Context content;    private String uid;    private Map<String, String> map;    public ShopAdapter(Context content, List<ShopCar.DataBean> data, String uid) {        this.content=content;        this.data=data;        this.uid=uid;    }    public delect dd;    public void setdelect(delect dd){        this.dd=dd;    }    public Qcheck qq;    public void setQcheck(Qcheck qq){        this.qq=qq;    }    @Override    public CarAdapter onCreateViewHolder(ViewGroup parent, int viewType) {        View inflate = View.inflate(content, R.layout.shapcar1_item, null);        CarAdapter car=new CarAdapter(inflate);        return car;    }    @Override    public void onBindViewHolder(final CarAdapter holder, int position) {        String sellerName = data.get(position).sellerName;        final List<ShopCar.DataBean.ListBean> lliisstt = data.get(position).list;      //        boolean ff=true;        for (ShopCar.DataBean.ListBean listBean : lliisstt) {            if (listBean.selected==0){                ff=false;            }        }        holder.ckk.setChecked(ff);        //        holder.tv_shophome.setText(sellerName);        holder.shop_li_recycle.setLayoutManager(new LinearLayoutManager(content));        final ShopCarLi caliadapter = new ShopCarLi(content, lliisstt);        holder.shop_li_recycle.setAdapter(caliadapter);        //====================================================        caliadapter.setCheck(new Check() {            @Override            public void checkli(final int itemnum) {                boolean f=true;                for (ShopCar.DataBean.ListBean listBean : lliisstt) {                    if(listBean.selected==0){                        f=false;                    }                }               //商家选框                holder.ckk.setChecked(f);                //holder.get商家条目,itemnum商品条目                qq.one(holder.getLayoutPosition(),itemnum);        }        });        holder.ckk.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                for (ShopCar.DataBean.ListBean listBean : lliisstt) {                    if(holder.ckk.isChecked()){                        listBean.selected=1;                    }else {                        listBean.selected=0;                    }                }                qq.two(holder.getLayoutPosition());                caliadapter.notifyDataSetChanged();            }        });        caliadapter.setOnItemClickListener(new OnItemClickListener() {            @Override            public void onItemClick(View view, int position) {                Adleg(position,dd,holder.getLayoutPosition());            }            private void Adleg(final int position, final delect dd, final int layoutPosition) {                AlertDialog.Builder builder=new AlertDialog.Builder(content);                builder.setTitle("删除,请三思");                builder.setMessage("这可是你自己要删除的,想好了啊");                builder.setPositiveButton("去意已决", new DialogInterface.OnClickListener() {                    @Override                    public void onClick(DialogInterface dialogInterface,final int i) {                        String pid = lliisstt.get(position).pid;                        dd.dele(pid,position,layoutPosition);                    }                }).create();                builder.setNegativeButton("我再想想", new DialogInterface.OnClickListener() {                    @Override                    public void onClick(DialogInterface dialogInterface, int i) {                        Toast.makeText(content,"少侠,你很机智",Toast.LENGTH_SHORT).show();                    }                }).create();                builder.show();            }        });       //======================================================    }    @Override    public int getItemCount() {        return data.size();    }    class CarAdapter extends RecyclerView.ViewHolder{        private TextView tv_shophome;        private RecyclerView shop_li_recycle;        private CheckBox ckk;        public CarAdapter(View itemView) {            super(itemView);             tv_shophome = itemView.findViewById(R.id.tv_shophome);             shop_li_recycle = itemView.findViewById(R.id.shop_li_recy);             ckk = itemView.findViewById(R.id.ck_shophome);        }    }public interface Qcheck{    void one(int i, int o);    void two(int p);}public interface delect{    void dele(String pid, int postion, int p);}}
2.ShopCarLi
package test.bwie.shopcar.Adapter;import android.content.Context;import android.support.v7.widget.RecyclerView;import android.view.View;import android.view.ViewGroup;import android.widget.CheckBox;import android.widget.CompoundButton;import android.widget.ImageView;import android.widget.TextView;import com.bumptech.glide.Glide;import java.util.List;import test.bwie.shopcar.OnItemClickListener;import test.bwie.shopcar.R;import test.bwie.shopcar.bean.Check;import test.bwie.shopcar.bean.ShopCar;/** * Created by 蒋六六 on 2017/10/18. */public class ShopCarLi extends RecyclerView.Adapter<ShopCarLi.Carli> {    public Context context;    public List<ShopCar.DataBean.ListBean> list;    public Check check;    public void setCheck(Check check){        this.check=check;    }    public OnItemClickListener onItemClickListener;    public void setOnItemClickListener(OnItemClickListener onItemClickListener){this.onItemClickListener=onItemClickListener;}    public ShopCarLi(Context content, List<ShopCar.DataBean.ListBean> lliisstt) {        this.context=content;        this.list=lliisstt;    }    @Override    public Carli onCreateViewHolder(ViewGroup parent, int viewType) {        View inflate = View.inflate(context, R.layout.shopcar2_item, null);        Carli car=new Carli(inflate);        return car;    }    @Override    public void onBindViewHolder(final Carli holder, final int position) {        String images = list.get(position).images;        String[] split = images.split("\\|");        if(list.get(position).selected==0){            holder.ck.setChecked(false);        }else {            holder.ck.setChecked(true);        }        holder.ck.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {            @Override            public void onCheckedChanged(CompoundButton compoundButton, boolean b) {                if (b){                    list.get(position).selected=1;                }else {                    list.get(position).selected=0;                }                if(check!=null){                    check.checkli(holder.getLayoutPosition());                }            }        });        Glide.with(context).load(split[0]).into(holder.img);        holder.tv.setText(list.get(position).subhead);        holder.tv1.setText(list.get(position).title);        holder.tv2.setText("¥"+list.get(position).price);        holder.itemView.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                onItemClickListener.onItemClick(holder.itemView,position);            }        });    }    @Override    public int getItemCount() {        return list.size();    }    class Carli extends RecyclerView.ViewHolder{        public ImageView img;        public TextView tv;        public TextView tv1;        public TextView tv2;        public CheckBox ck;        public Carli(View itemView) {            super(itemView);            img = itemView.findViewById(R.id.imageView12);            tv=itemView.findViewById(R.id.tv_jianjie);            tv1=itemView.findViewById(R.id.tv_jianjie2);            tv2=itemView.findViewById(R.id.tv_shop_price);            ck=itemView.findViewById(R.id.ck_gt);        }    }}
/////////Main
package test.bwie.shopcar;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import android.view.View;import android.widget.CheckBox;import android.widget.TextView;import android.widget.Toast;import com.google.gson.Gson;import java.io.IOException;import java.text.DecimalFormat;import java.util.HashMap;import java.util.List;import java.util.Map;import okhttp3.Call;import okhttp3.Callback;import okhttp3.Response;import test.bwie.shopcar.Adapter.ShopAdapter;import test.bwie.shopcar.bean.ShopCar;public class MainActivity extends AppCompatActivity implements View.OnClickListener {    private int sumNum;    private Double sumPrice = 0.0;    private DecimalFormat decimalFormat;    private RecyclerView car_recy;    private CheckBox mCheckboxQuanxuan;    private TextView tv_sum;    private TextView mJiesuanButton;    private String url="http://120.27.23.105/product/getCarts?uid=185";    private List<ShopCar.DataBean> data;    private ShopAdapter shopadapter;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initView();        okhttp();        decimalFormat = new DecimalFormat("#0.00");    }    private void okhttp() {        NetRequestUtils.ok(url, new Callback() {            private ShopCar shopCar;            @Override            public void onFailure(Call call, IOException e) {            }            @Override            public void onResponse(Call call, Response response) throws IOException {                String    string = response.body().string();                Gson gson=new Gson();                ShopCar shopCar = gson.fromJson(string, ShopCar.class);                data = shopCar.data;                if (data!=null){                    for (ShopCar.DataBean dataBean : data) {                        for (ShopCar.DataBean.ListBean listBean : dataBean.list) {                            if (listBean.selected==1){                                sumNum++;                                sumPrice = sumPrice + Double.parseDouble(listBean.price);                            }}}                    //==========分割线                    runOnUiThread(new Runnable() {                        @Override                        public void run() {                            tv_sum.setText("合计:¥"+decimalFormat.format(sumPrice));                            mJiesuanButton.setText("去结算("+sumNum+")");                            shopadapter = new ShopAdapter(MainActivity.this, data, "185");                            car_recy.setAdapter(shopadapter);                            delect();                            shopadapter.setQcheck(new ShopAdapter.Qcheck() {                                @Override                                public void one(int i, int o) {                                    // TODO: 2017/10/21 商品选中状态改变计算价格                                    String p = data.get(i).list.get(o).price;                                    if (data.get(i).list.get(o).selected == 1){                                        sumPrice = sumPrice + Double.parseDouble(p);                                        sumNum++;                                    } else {                                        sumPrice = sumPrice - Double.parseDouble(p);                                        sumNum--;                                    }                                    tv_sum.setText("合计:¥"+decimalFormat.format(sumPrice));                                    mJiesuanButton.setText("去结算("+sumNum+")");                                    //-------------------华丽的分割线---------------                                    boolean f = true;                                    for (ShopCar.DataBean dataBean : data) {                                        for (ShopCar.DataBean.ListBean listBean : dataBean.list) {                                            if (listBean.selected == 0) {                                                f = false;                                            }                                        }                                    }                                    mCheckboxQuanxuan.setChecked(f);                                }                                @Override                                public void two(int p) {                                    boolean f = true;                                    for (ShopCar.DataBean dataBean : data) {                                        for (ShopCar.DataBean.ListBean listBean : dataBean.list) {                                            if (listBean.selected == 0) {                                                f = false;                                            }                                        }                                    }                                    mCheckboxQuanxuan.setChecked(f);                                }                            });                        }                    });                }            }        });    }    private void delect() {        shopadapter.setdelect(new ShopAdapter.delect() {            @Override            public void dele(String pid, final int postion, final int lapotion) {                Map<String, String> map = new HashMap<String, String>();                map.put("pid", pid);                map.put("uid", "185");                NetRequestUtils.chuan(map, "http://120.27.23.105/product/deleteCart", new NetRequestUtils.OkhttpIn() {                    @Override                    public void onresponse(String string) {                       runOnUiThread(new Runnable() {                            @Override                            public void run() {                                data.get(lapotion).list.remove(postion);                                for (int i = 0; i < data.size(); i++) {                                    if (data.get(i).list.size() == 0) {                                        data.remove(i);                                    }                                }                                shopadapter.notifyDataSetChanged();                            }});}});}});    }    private void initView() {        car_recy = (RecyclerView) findViewById(R.id.shopcar_recycle);        car_recy.setLayoutManager(new LinearLayoutManager(MainActivity.this));        mCheckboxQuanxuan = (CheckBox) findViewById(R.id.checkbox_quanxuan);        mCheckboxQuanxuan.setOnClickListener(this);        tv_sum = (TextView) findViewById(R.id.tv_sum);        mJiesuanButton = (TextView) findViewById(R.id.jiesuan_button);        mJiesuanButton.setOnClickListener(this);    }    @Override    public void onClick(View v) {        switch (v.getId()) {            case R.id.shopcar_recycle:                break;            case R.id.checkbox_quanxuan:                QXcheck();                break;            case R.id.jiesuan_button:                int num=1;                if(num>0){                    Toast.makeText(MainActivity.this,decimalFormat.format(sumPrice),Toast.LENGTH_SHORT).show();                }                break;        }    }    private void QXcheck() {        for (ShopCar.DataBean dataBean : data) {            for (ShopCar.DataBean.ListBean listBean : dataBean.list) {                if(mCheckboxQuanxuan.isChecked()){                    if (listBean.selected == 0) {                        //// TODO: 2017/10/21 点击全部选中时,先加上之前未选中的价钱 然后改变状态                        sumNum++;                        sumPrice = sumPrice + Double.parseDouble(listBean.price);                        listBean.selected=1;                    }                }else {                    if (listBean.selected == 1) {                        //// TODO: 2017/10/21 点击全部取消选中时,先减去之前选中的价钱 然后改变状态                        sumNum--;                        sumPrice = sumPrice - Double.parseDouble(listBean.price);                        listBean.selected = 0;                    }                }            }        }        tv_sum.setText("合计:¥"+decimalFormat.format(sumPrice));        mJiesuanButton.setText("去结算("+sumNum+")");        shopadapter.notifyDataSetChanged();    }}
下面贴出布局
main.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:weightSum="1">    <RelativeLayout        android:layout_width="match_parent"        android:layout_height="40dp">        <TextView            android:layout_centerInParent="true"            android:text="购物车"            android:layout_width="wrap_content"            android:layout_height="wrap_content" />    </RelativeLayout>    <android.support.v7.widget.RecyclerView        android:id="@+id/shopcar_recycle"        android:layout_width="match_parent"        android:layout_height="430dp">    </android.support.v7.widget.RecyclerView>    <LinearLayout        android:orientation="horizontal"        android:layout_width="match_parent"        android:layout_height="match_parent">        <!-- 全选的布局 -->        <CheckBox            android:id="@+id/checkbox_quanxuan"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_marginLeft="10dp"            android:text="全选"/>        <!-- 合计的布局 -->        <TextView            android:id="@+id/tv_sum"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:gravity="right"            android:paddingRight="10dp"            android:textColor="#F63A19"            android:text="合计:¥0.00"/>        <!-- 去结算的布局 -->        <TextView            android:background="#F63A19"            android:id="@+id/jiesuan_button"            android:layout_width="80dp"            android:layout_height="wrap_content"            android:layout_marginRight="10dp"            android:gravity="center"            android:padding="10dp"            android:text="去结算"/>    </LinearLayout></LinearLayout>
shopcar1.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"    ><LinearLayout    android:layout_width="match_parent"    android:layout_height="wrap_content">    <CheckBox        android:id="@+id/ck_shophome"        android:layout_width="wrap_content"        android:layout_height="wrap_content" />    <TextView        android:id="@+id/tv_shophome"        android:text="商家"        android:layout_width="wrap_content"        android:layout_height="wrap_content" /></LinearLayout>    <android.support.v7.widget.RecyclerView        android:id="@+id/shop_li_recy"        android:layout_width="match_parent"        android:layout_height="wrap_content">    </android.support.v7.widget.RecyclerView></LinearLayout>

3.shopcarli.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:background="#ffffff"    android:layout_height="match_parent">    <CheckBox        android:layout_gravity="center"        android:id="@+id/ck_gt"        android:layout_width="wrap_content"        android:layout_height="wrap_content" />    <ImageView        android:id="@+id/imageView12"        android:layout_width="70dp"        android:layout_height="70dp"        android:layout_gravity="center"        android:src="@mipmap/ic_launcher" />    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_gravity="center"        android:orientation="vertical">        <TextView            android:id="@+id/tv_jianjie"            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:text="克拉裸钻定制DIA双证书18K金钻石戒指女款克拉钻戒"            android:textSize="13sp" />        <TextView            android:id="@+id/tv_jianjie2"            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:text="啦啦啦啦啦啦啦啦"            android:textSize="10dp" />        <RelativeLayout            android:layout_width="match_parent"            android:layout_height="wrap_content">            <TextView                android:id="@+id/tv_shop_price"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:text="¥4500000.00"                android:textColor="#ff0000" />        </RelativeLayout>    </LinearLayout></LinearLayout>



原创粉丝点击