购物车

详情页面

packagecom.example.shoppingcar;

importandroid.content.Intent;

importandroid.os.Bundle;

importandroid.support.v7.app.AppCompatActivity;

importandroid.support.v7.widget.LinearLayoutManager;

importandroid.support.v7.widget.RecyclerView;

importandroid.widget.TextView;

importcom.example.shoppingcar.bean.CartBean;

importcom.example.shoppingcar.presenter.cartPresenter;

importcom.example.shoppingcar.view.ViewCallBack;

importjava.util.List;

importbutterknife.Bind;

importbutterknife.ButterKnife;

importbutterknife.OnClick;

public classXQActivityextendsAppCompatActivityimplementsViewCallBack {

@Bind(R.id.GWC)

TextViewGWC;

@Bind(R.id.XQ_Recy)

RecyclerViewXQRecy;

privatecom.example.shoppingcar.presenter.cartPresentercartPresenter;

@Override

protected voidonCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_xq);

ButterKnife.bind(this);

cartPresenter=newcartPresenter(this);

cartPresenter.cartFF();

}

@OnClick(R.id.GWC)

public voidonViewClicked() {

startActivity(newIntent(XQActivity.this, MainActivity.class));

finish();

}

@Override

public voidsuccess(CartBean cartBean) {

List data = cartBean.data;

XQRecy.setLayoutManager(newLinearLayoutManager(this));

XQRecy.setAdapter(newXQAdapter(this, data));

}

@Override

public voidfailure(Exception e) {

}

@Override

protected voidonDestroy() {

super.onDestroy();

cartPresenter.detach();

}

}

详情页面Adapter

packagecom.example.shoppingcar;

importandroid.content.Context;

importandroid.net.Uri;

importandroid.support.v7.widget.RecyclerView;

importandroid.view.View;

importandroid.view.ViewGroup;

importandroid.widget.Button;

importandroid.widget.TextView;

importandroid.widget.Toast;

importcom.example.shoppingcar.bean.CartBean;

importcom.example.shoppingcar.bean.addBean;

importcom.example.shoppingcar.utils.APIFactory;

importcom.facebook.drawee.backends.pipeline.Fresco;

importcom.facebook.drawee.view.SimpleDraweeView;

importjava.util.HashMap;

importjava.util.List;

importjava.util.Map;

importrx.Observer;


public classXQAdapterextendsRecyclerView.Adapter {

Contextcontext;

Listdata;

publicXQAdapter(XQActivity xqActivity, List data) {

this.context= xqActivity;

this.data= data;

Fresco.initialize(context);

}

@Override

publicRecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent,intviewType) {

View view = View.inflate(context, R.layout.xqitem,null);

return newXQViewHolder(view);

}

@Override

public voidonBindViewHolder(RecyclerView.ViewHolder holder,final intposition) {

//拆分images字段

String[] split =data.get(position).images.split("\\|");

//设置商品的图片

((XQViewHolder) holder).img.setImageURI(Uri.parse(split[0]));

((XQViewHolder) holder).name.setText(data.get(position).title);

((XQViewHolder) holder).price.setText(data.get(position).price+"");

((XQViewHolder) holder).btn.setOnClickListener(newView.OnClickListener() {

@Override

public voidonClick(View view) {

intpid =data.get(position).pid;

Map map =newHashMap();

map.put("uid","4421");

map.put("pid", pid +"");

APIFactory.getInstance().add(map,newObserver() {

@Override

public voidonCompleted() {

}

@Override

public voidonError(Throwable e) {

}

@Override

public voidonNext(addBean addBean) {

String code = addBean.code;

if(code.equals("0")) {

Toast.makeText(context,"加购成功", Toast.LENGTH_SHORT).show();

}else if(code.equals("1")) {

Toast.makeText(context,"天呢!用户未登录或用户id不能为空", Toast.LENGTH_SHORT).show();

}

}

});

}

});

}

@Override

public intgetItemCount() {

returndata.size();

}

classXQViewHolderextendsRecyclerView.ViewHolder {

private finalSimpleDraweeViewimg;

private finalTextViewname;

private finalTextViewprice;

private finalButtonbtn;

publicXQViewHolder(View itemView) {

super(itemView);

img= itemView.findViewById(R.id.xq_fresco);

name= itemView.findViewById(R.id.xq_name);

price= itemView.findViewById(R.id.xq_price);

btn= itemView.findViewById(R.id.xq_btn);

}

}

}

购物车Activity


packagecom.example.shoppingcar;

importandroid.content.Intent;

importandroid.os.Bundle;

importandroid.support.v7.app.AppCompatActivity;

importandroid.support.v7.widget.LinearLayoutManager;

importandroid.support.v7.widget.RecyclerView;

importandroid.view.View;

importandroid.widget.CheckBox;

importandroid.widget.LinearLayout;

importandroid.widget.TextView;

importandroid.widget.Toast;

importcom.example.shoppingcar.bean.queryBean;

importcom.example.shoppingcar.presenter.queryPresenter;

importcom.example.shoppingcar.view.queryView;

importbutterknife.Bind;

importbutterknife.ButterKnife;

public classMainActivityextendsAppCompatActivityimplementsqueryView {

@Bind(R.id.bianji)

TextViewbianji;

@Bind(R.id.recycler_View)

RecyclerViewrecyclerView;

@Bind(R.id.quanxuan)

CheckBoxquanxuan;

@Bind(R.id.total_price)

TextViewtotalPrice;

@Bind(R.id.total_num)

TextViewtotalNum;

@Bind(R.id.quzhifu)

TextViewquzhifu;

@Bind(R.id.shanchu)

TextViewshanchu;

@Bind(R.id.linear_shanchu)

LinearLayoutlinearShanchu;

@Bind(R.id.activity_main)

LinearLayoutactivityMain;

@Bind(R.id.back)

TextViewback;

privateRecyAdapterrecyAdapter;

privatecom.example.shoppingcar.presenter.queryPresenterqueryPresenter;

@Override

protected voidonCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

ButterKnife.bind(this);

bianji.setTag(1);//编辑设置TAG=1

quanxuan.setTag(1);//全选设置TAG=1  为未选中

queryPresenter=newqueryPresenter(this);

recyclerView.setLayoutManager(newLinearLayoutManager(this));

recyAdapter=newRecyAdapter(this);

queryPresenter.queryFF();

recyclerView.setAdapter(recyAdapter);

back.setOnClickListener(newView.OnClickListener() {

@Override

public voidonClick(View view) {

startActivity(newIntent(MainActivity.this, XQActivity.class));

finish();

}

});

//调用RecyAdapter里面的接口,设置全选按钮  总价  总数量

recyAdapter.setUpdateListener(newRecyAdapter.UpdateListener() {

@Override

public voidsetTotal(String total, String num,booleanallCheck) {

//设置ui的改变

totalNum.setText("共"+ num +"件商品");//总数量

totalPrice.setText("总价 :¥"+ total +"元");//总价

if(allCheck) {

quanxuan.setTag(2);

quanxuan.setBackgroundResource(R.drawable.shopcart_selected);

}else{

quanxuan.setTag(1);

quanxuan.setBackgroundResource(R.drawable.shopcart_unselected);

}

quanxuan.setChecked(allCheck);

}

});

//这里只做ui更改, 点击全选按钮,,调到adapter里面操作

quanxuan.setOnClickListener(newView.OnClickListener() {

@Override

public voidonClick(View v) {

//调用adapter里面的方法 ,,把当前quanxuan状态传递过去

inttag = (int)quanxuan.getTag();

if(tag ==1) {

quanxuan.setTag(2);

quanxuan.setBackgroundResource(R.drawable.shopcart_selected);

}else{

quanxuan.setTag(1);

quanxuan.setBackgroundResource(R.drawable.shopcart_unselected);

}

recyAdapter.quanXuan(quanxuan.isChecked());

}

});

//点击批量删除的按钮

shanchu.setOnClickListener(newView.OnClickListener() {

@Override

public voidonClick(View view) {

recyAdapter.shanChu();

}

});

//点击编辑按钮,

bianji.setOnClickListener(newView.OnClickListener() {

@Override

public voidonClick(View view) {

inttag = (int)bianji.getTag();

if(tag ==1) {

bianji.setText("完成");

bianji.setTag(2);

quzhifu.setVisibility(View.GONE);

shanchu.setVisibility(View.VISIBLE);

}else{

bianji.setText("编辑");

bianji.setTag(1);

quzhifu.setVisibility(View.VISIBLE);

shanchu.setVisibility(View.GONE);

}

}

});

}

@Override

public voidsuccess(queryBean queryBean) {

if(queryBean !=null) {

//将返回的数据添加到适配器中

recyAdapter.add(queryBean);

}

}

@Override

public voidfailure() {

System.out.println("网不好");

runOnUiThread(newRunnable() {

@Override

public voidrun() {

Toast.makeText(MainActivity.this,"网有点慢", Toast.LENGTH_SHORT).show();

}

});

}

@Override

protected voidonDestroy() {

super.onDestroy();

//解除绑定

queryPresenter.detach();

}

}

购物车Adapter

packagecom.example.shoppingcar;

importandroid.content.Context;

importandroid.content.DialogInterface;

importandroid.net.Uri;

importandroid.support.v7.app.AlertDialog;

importandroid.support.v7.widget.RecyclerView;

importandroid.view.View;

importandroid.view.ViewGroup;

importandroid.widget.CheckBox;

importandroid.widget.ImageView;

importandroid.widget.TextView;

importandroid.widget.Toast;

importcom.example.shoppingcar.bean.deleteBean;

importcom.example.shoppingcar.bean.queryBean;

importcom.example.shoppingcar.presenter.deletePresenter;

importcom.example.shoppingcar.presenter.queryPresenter;

importcom.example.shoppingcar.utils.APIFactory;

importcom.example.shoppingcar.view.deleteView;

importcom.example.shoppingcar.view.queryView;

importcom.facebook.drawee.backends.pipeline.Fresco;

importjava.util.ArrayList;

importjava.util.HashMap;

importjava.util.List;

importjava.util.Map;

importrx.Observer;


public classRecyAdapterextendsRecyclerView.AdapterimplementsqueryView, deleteView {

queryPresenterqueryPresenter;

deletePresenterdeletePresenter;

Contextcontext;

//创建大的集合

privateListlist;

//存放商家的id和商家的名称的map集合

privateMapmap=newHashMap<>();

publicRecyAdapter(MainActivity mainActivity) {

this.context= mainActivity;

queryPresenter=newqueryPresenter(this);

deletePresenter=newdeletePresenter(this);

//初始化Fresco

Fresco.initialize(context);

}

@Override

publicRecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent,intviewType) {

View view = View.inflate(context, R.layout.recy_cart_item,null);

return newMyViewHolder(view);

}

@Override

public voidonBindViewHolder(finalRecyclerView.ViewHolder holder,final intposition) {

/**

* 设置商铺的 shop_checkbox和商铺的名字 显示或隐藏

* */

if(list.get(position).getIsFirst() ==1) {

//显示商家

((MyViewHolder) holder).shop_checkbox.setVisibility(View.VISIBLE);

((MyViewHolder) holder).shop_name.setVisibility(View.VISIBLE);

//设置shop_checkbox的选中状态

((MyViewHolder) holder).shop_checkbox.setChecked(list.get(position).isShop_check());

((MyViewHolder) holder).shop_name.setText(map.get(String.valueOf(list.get(position).getSellerid())) +" >");

}else{//2

//隐藏商家

((MyViewHolder) holder).shop_name.setVisibility(View.GONE);

((MyViewHolder) holder).shop_checkbox.setVisibility(View.GONE);

}

//拆分images字段

String[] split =list.get(position).getImages().split("\\|");

//设置商品的图片

((MyViewHolder) holder).item_face.setImageURI(Uri.parse(split[0]));

// ImageLoader.getInstance().displayImage(split[0],holder.item_face);

//控制商品的item_checkbox,,根据字段改变

((MyViewHolder) holder).item_checkbox.setChecked(list.get(position).isItem_check());

((MyViewHolder) holder).item_name.setText(list.get(position).getTitle());

((MyViewHolder) holder).item_price.setText(list.get(position).getPrice() +"");

//调用customjiajian里面的方法设置 加减号中间的数字

((MyViewHolder) holder).customJiaJian.setEditText(list.get(position).getNum());

((MyViewHolder) holder).item_bianji.setTag(1);

//点击item编辑才显示 自定义加减框

((MyViewHolder) holder).item_bianji.setOnClickListener(newView.OnClickListener() {

@Override

public voidonClick(View view) {

inttag = (int) ((MyViewHolder)holder).item_bianji.getTag();

if(tag ==1) {

//加减号显示

((MyViewHolder)holder).item_bianji.setText("完成");

((MyViewHolder)holder).customJiaJian.setVisibility(View.VISIBLE);

//商品的名称隐藏

((MyViewHolder)holder).item_name.setVisibility(View.GONE);

((MyViewHolder)holder).item_yansechima.setVisibility(View.VISIBLE);

((MyViewHolder)holder).item_price.setVisibility(View.GONE);

((MyViewHolder)holder).item_delete.setVisibility(View.VISIBLE);

((MyViewHolder)holder).item_bianji.setTag(2);

}else{

//相反的 隐藏的显示,显示的隐藏

//加减号显示

((MyViewHolder)holder).item_bianji.setText("编辑");

((MyViewHolder)holder).customJiaJian.setVisibility(View.GONE);

//商品的名称隐藏

((MyViewHolder)holder).item_name.setVisibility(View.VISIBLE);

((MyViewHolder)holder).item_yansechima.setVisibility(View.GONE);

((MyViewHolder)holder).item_price.setVisibility(View.VISIBLE);

((MyViewHolder)holder).item_delete.setVisibility(View.GONE);

((MyViewHolder)holder).item_bianji.setTag(1);

}

}

});

//设置点击多选框

//商铺的shop_checkbox点击事件 ,控制商品的item_checkbox

((MyViewHolder) holder).shop_checkbox.setOnClickListener(newView.OnClickListener() {

@Override

public voidonClick(View v) {

//先改变数据源中的shop_check

list.get(position).setShop_check(((MyViewHolder)holder).shop_checkbox.isChecked());

for(inti =0; i

//如果是同一家商铺的 都给成相同状态

if(list.get(position).getSellerid() ==list.get(i).getSellerid()) {

//当前条目的选中状态 设置成 当前商铺的选中状态

list.get(i).setItem_check(((MyViewHolder)holder).shop_checkbox.isChecked());

}

}

//刷新适配器

notifyDataSetChanged();

//调用求和的方法

sum(list);

}

});

//商品的item_checkbox点击事件,控制商铺的shop_checkbox

((MyViewHolder) holder).item_checkbox.setOnClickListener(newView.OnClickListener() {

@Override

public voidonClick(View v) {

//先改变数据源中的item_checkbox

list.get(position).setItem_check(((MyViewHolder)holder).item_checkbox.isChecked());

//反向控制商铺的shop_checkbox

for(inti =0; i

for(intj =0; j

//如果两个商品是同一家店铺的 并且 这两个商品的item_checkbox选中状态不一样

if(list.get(i).getSellerid() ==list.get(j).getSellerid() && !list.get(j).isItem_check()) {

//就把商铺的shop_checkbox改成false

list.get(i).setShop_check(false);

break;

}else{

//同一家商铺的商品 选中状态都一样,就把商铺shop_checkbox状态改成true

list.get(i).setShop_check(true);

}

}

}

//更新适配器

notifyDataSetChanged();

//调用求和的方法

sum(list);

}

});

//删除条目的点击事件

((MyViewHolder) holder).item_delete.setOnClickListener(newView.OnClickListener() {

@Override

public voidonClick(View v) {

//                list.remove(position);//移除集合中的当前数据

//删除完当前的条目 重新判断商铺的显示隐藏

intpid =list.get(position).getPid();

Map mapDel =newHashMap();

mapDel.put("uid","4421");

mapDel.put("pid", pid +"");

APIFactory.getInstance().delete(mapDel,newObserver() {

@Override

public voidonCompleted() {

}

@Override

public voidonError(Throwable e) {

}

@Override

public voidonNext(deleteBean deleteBean) {

String code = deleteBean.code;

if(code.equals("0")) {

Toast.makeText(context,"删除购物车成功", Toast.LENGTH_SHORT).show();

list.remove(position);

setFirst(list);

//调用重新求和

sum(list);

notifyDataSetChanged();

}else if(code.equals("1")) {

Toast.makeText(context,"天呢!商品id不能为空", Toast.LENGTH_SHORT).show();

}

}

});

}

});

//加减号的监听,

((MyViewHolder) holder).customJiaJian.setCustomListener(newCustomJiaJian.CustomListener() {

@Override

public voidjiajian(intcount) {

//改变数据源中的数量

list.get(position).setNum(count);

notifyDataSetChanged();

sum(list);

}

@Override

//输入值 求总价

public voidshuRuZhi(intcount) {

list.get(position).setNum(count);

notifyDataSetChanged();

sum(list);

}

});

}

@Override

public intgetItemCount() {

returnlist==null?0:list.size();

}

classMyViewHolderextendsRecyclerView.ViewHolder {

private finalCheckBoxshop_checkbox;

private finalTextViewshop_name;

private finalCheckBoxitem_checkbox;

private finalTextViewitem_name;

private finalTextViewitem_price;

private finalCustomJiaJiancustomJiaJian;

//private final ImageView item_delete;

private finalTextViewitem_delete;

private finalImageViewitem_face;

private finalTextViewitem_bianji;

private finalTextViewitem_yansechima;

publicMyViewHolder(View itemView) {

super(itemView);

//拿到控件

shop_checkbox= (CheckBox) itemView.findViewById(R.id.shop_checkbox);

shop_name= (TextView) itemView.findViewById(R.id.shop_name);

item_checkbox= (CheckBox) itemView.findViewById(R.id.item_checkbox);

item_name= (TextView) itemView.findViewById(R.id.item_name);

item_price= (TextView) itemView.findViewById(R.id.item_price);

customJiaJian= (CustomJiaJian) itemView.findViewById(R.id.custom_jiajian);

//item_delete = (ImageView) itemView.findViewById(R.id.item_delete);

item_delete= (TextView) itemView.findViewById(R.id.item_delete);

item_face= (ImageView) itemView.findViewById(R.id.item_face);

item_bianji= itemView.findViewById(R.id.item_bianji);

item_yansechima= itemView.findViewById(R.id.item_yansechima);

}

}

UpdateListenerupdateListener;

public voidsetUpdateListener(UpdateListener updateListener) {

this.updateListener= updateListener;

}

//view层调用这个方法, 点击quanxuan按钮的操作

public voidquanXuan(booleanchecked) {

for(inti =0; i

list.get(i).setShop_check(checked);

list.get(i).setItem_check(checked);

}

notifyDataSetChanged();

sum(list);

}

private voidsum(List list) {

inttotalNum =0;

floattotalMoney =0.0f;

booleanallCheck =true;

for(inti =0; i < list.size(); i++) {

if(list.get(i).isItem_check()) {

totalNum += list.get(i).getNum();

totalMoney += list.get(i).getNum() * list.get(i).getPrice();

}else{

//如果有个未选中,就标记为false

allCheck =false;

}

}

//接口回调出去 把总价 总数量 和allcheck 传给view层

updateListener.setTotal(totalMoney +"", totalNum +"", allCheck);

}

//批量删除的按钮

public voidshanChu() {

//存储删除的id

finalList delete_listid =newArrayList<>();

for(inti =0; i

if(list.get(i).isItem_check()) {

//将要删除的pid添加到这个集合里

delete_listid.add(list.get(i).getPid());

}

}

if(delete_listid.size() ==0) {

//如果没有要删除的,就吐司提示

Toast.makeText(context,"请选中至少一个商品后再删除", Toast.LENGTH_SHORT).show();

return;

}

//弹框

finalAlertDialog.Builder dialog =newAlertDialog.Builder(context);

dialog.setTitle("操作提示");

dialog.setMessage("你确定要删除这"+ delete_listid.size() +"个商品?");

dialog.setPositiveButton("确定",newDialogInterface.OnClickListener() {

@Override

public voidonClick(DialogInterface dialogInterface,inti) {

//使用接口删除

String a ="";

for(intj =0; j

// a+=delete_listid.get(j)+"";

Integer integer =delete_listid.get(j);

String pid = String.valueOf(integer);

deletePresenter.deleteFF(pid);

// list.remove(j);

}

//  Toast.makeText(context, a,Toast.LENGTH_SHORT).show();

}

}).setNegativeButton("取消",newDialogInterface.OnClickListener() {

@Override

public voidonClick(DialogInterface dialogInterface,inti) {

dialogInterface.cancel();

}

}).create().show();

}

public voidadd(queryBean queryBean) {

if(list==null) {

list=newArrayList<>();

}

if(queryBean !=null) {

for(queryBean.DataBean shop : queryBean.getData()) {

map.put(shop.getSellerid(), shop.getSellerName());

//第二层遍历里面的商品

for(inti =0; i < shop.getList().size(); i++) {

//添加到list集合里

list.add(shop.getList().get(i));

}

}

//调用方法 设置显示或隐藏 商铺名

setFirst(list);

}

notifyDataSetChanged();

}

/**

* 设置数据源,控制是否显示商家

*/

private voidsetFirst(List list) {

if(list.size() >0) {

list.get(0).setIsFirst(1);

//从第二条开始遍历

for(inti =1; i < list.size(); i++) {

//如果和前一个商品是同一家商店的

if(list.get(i).getSellerid() == list.get(i -1).getSellerid()) {

//设置成2不显示商铺

list.get(i).setIsFirst(2);

}else{//设置成1显示商铺

list.get(i).setIsFirst(1);

//如果当前条目选中,把当前的商铺也选中

if(list.get(i).isItem_check() ==true) {

list.get(i).setShop_check(list.get(i).isItem_check());

}

}

}

}

}

@Override

public voidsuccess(queryBean queryBean) {

list.clear();

add(queryBean);

}

@Override

public voidsuccess(deleteBean deleteBean) {

queryPresenter.queryFF();

}

@Override

public voidfailure() {

System.out.println("网不好");

Toast.makeText(context,"adapter网有点慢", Toast.LENGTH_SHORT).show();

}

//接口

public interfaceUpdateListener {

public voidsetTotal(String total, String num,booleanallCheck);

}

}

自定义控件:加减器


packagecom.example.shoppingcar;

importandroid.content.Context;

importandroid.support.annotation.Nullable;

importandroid.util.AttributeSet;

importandroid.view.View;

importandroid.widget.Button;

importandroid.widget.EditText;

importandroid.widget.LinearLayout;

importandroid.widget.Toast;

/**

* Created by Menglucywhh on 2017/12/19.

*/

public classCustomJiaJianextendsLinearLayout{

privateButtonreverse;

privateButtonadd;

privateEditTextcountEdit;

private intmCount=1;

publicCustomJiaJian(Context context) {

super(context);

}

publicCustomJiaJian(finalContext context,@NullableAttributeSet attrs) {

super(context, attrs);

View view = View.inflate(context, R.layout.custom_jiajian,this);

reverse= (Button) view.findViewById(R.id.reverse);

add= (Button) view.findViewById(R.id.add);

countEdit= (EditText) view.findViewById(R.id.count);

reverse.setOnClickListener(newOnClickListener() {

@Override

public voidonClick(View v) {

String content =countEdit.getText().toString().trim();

intcount = Integer.valueOf(content);

if(count>1){

mCount= count-1;

countEdit.setText(mCount+"");

//回调给adapter里面

if(customListener!=null){

customListener.jiajian(mCount);

}

}else{

Toast.makeText(context,"最小数量为1", Toast.LENGTH_SHORT).show();

}

}

});

add.setOnClickListener(newOnClickListener() {

@Override

public voidonClick(View v) {

String content =countEdit.getText().toString().trim();

intcount = Integer.valueOf(content)+1;

mCount= count;

countEdit.setText(mCount+"");

//接口回调给adapter

if(customListener!=null){

customListener.jiajian(mCount);

}

}

});

}

publicCustomJiaJian(Context context,@NullableAttributeSet attrs,intdefStyleAttr) {

super(context, attrs, defStyleAttr);

}

CustomListenercustomListener;

public voidsetCustomListener(CustomListener customListener){

this.customListener= customListener;

}

//加减的接口

public interfaceCustomListener{

public voidjiajian(intcount);

public voidshuRuZhi(intcount);

}

public voidsetEditText(intnum) {

if(countEdit!=null){

countEdit.setText(num+"");

}

}

}

Retrofit的URL


packagecom.example.shoppingcar;

importcom.example.shoppingcar.bean.CartBean;

importcom.example.shoppingcar.bean.addBean;

importcom.example.shoppingcar.bean.deleteBean;

importcom.example.shoppingcar.bean.queryBean;

importjava.util.Map;

importretrofit2.http.GET;

importretrofit2.http.QueryMap;

importrx.Observable;


public interfaceIGetHttpUrl {

@GET("searchProducts?page=1&source=android")

Observable cartUrl(@QueryMapMap map);

//    http://120.27.23.105/product/searchProducts?keywords=手机&page=1&source=android

@GET("addCart?token=0DA2B4A9F80689086B333CADEB7F306B&source=android")

Observable addUrl(@QueryMapMap map);

//    Observable addUrl(@Query("uid") String uid, @Query("pid") String pid);

@GET("getCarts?token=0DA2B4A9F80689086B333CADEB7F306B&source=android")

Observable queryUrl(@QueryMapMap map);

//    Observable queryUrl(@Query("uid") String uid);

@GET("deleteCart?token=0DA2B4A9F80689086B333CADEB7F306B&source=android")

Observable deleteUrl(@QueryMapMap map);

//    Observable deleteUrl(@Query("uid") String uid, @Query("pid") String pid);

}

APIFactory工具类


packagecom.example.shoppingcar.utils;

importcom.example.shoppingcar.bean.CartBean;

importcom.example.shoppingcar.bean.addBean;

importcom.example.shoppingcar.bean.deleteBean;

importcom.example.shoppingcar.bean.queryBean;

importjava.util.Map;

importrx.Observer;

importrx.android.schedulers.AndroidSchedulers;

importrx.schedulers.Schedulers;


public classAPIFactory {

private staticAPIFactoryfactory=null;

public staticAPIFactory getInstance() {

if(factory==null) {

synchronized(APIFactory.class) {

if(factory==null) {

factory=newAPIFactory();

}

}

}

returnfactory;

}

public voidquery(Map map, Observer observer) {

RetrofitUtils.getInstance().queryUrl(map)

.subscribeOn(Schedulers.io())

.observeOn(AndroidSchedulers.mainThread())

.subscribe(observer);

}

public voiddelete(Map map, Observer observer) {

RetrofitUtils.getInstance().deleteUrl(map)

.subscribeOn(Schedulers.io())

.observeOn(AndroidSchedulers.mainThread())

.subscribe(observer);

}

public voidcart(Map map, Observer observer) {

RetrofitUtils.getInstance().cartUrl(map)

.subscribeOn(Schedulers.io())

.observeOn(AndroidSchedulers.mainThread())

.subscribe(observer);

}

public voidadd(Map map, Observer observer) {

RetrofitUtils.getInstance().addUrl(map)

.subscribeOn(Schedulers.io())

.observeOn(AndroidSchedulers.mainThread())

.subscribe(observer);

}

}

OKhttp封装

packagecom.example.shoppingcar.utils;

importjava.util.concurrent.TimeUnit;

importokhttp3.OkHttpClient;


public classOkhttpUtils {

private staticOkHttpClientclient=null;

public staticOkHttpClient getInstance() {

if(client==null) {

synchronized(OkhttpUtils.class) {

if(client==null) {

client=newOkHttpClient.Builder()

.writeTimeout(20000, TimeUnit.SECONDS)

.readTimeout(20000, TimeUnit.SECONDS)

.connectTimeout(20000, TimeUnit.SECONDS)

.build();

}

}

}

returnclient;

}

}

Retrofit封装


packagecom.example.shoppingcar.utils;

importcom.example.shoppingcar.IGetHttpUrl;

importretrofit2.Retrofit;

importretrofit2.adapter.rxjava.RxJavaCallAdapterFactory;

importretrofit2.converter.gson.GsonConverterFactory;


public classRetrofitUtils {

private staticIGetHttpUrlservice=null;

public staticIGetHttpUrl getInstance() {

if(service==null) {

synchronized(RetrofitUtils.class) {

if(service==null){

Retrofit retrofit =newRetrofit.Builder()

.baseUrl("http://120.27.23.105/product/")

.addConverterFactory(GsonConverterFactory.create())

.addCallAdapterFactory(RxJavaCallAdapterFactory.create())

.client(OkhttpUtils.getInstance())

.build();

service= retrofit.create(IGetHttpUrl.class);

}

}

}

returnservice;

}

}

addBean


public classaddBean {

/**

* msg : 加购成功

* code : 0

*/

publicStringmsg;

publicStringcode;

}

cartBean

public classCartBean {

/**

* msg : 查询成功

* code : 0

* data : [{"bargainPrice":99,"createtime":"2017-10-14T21:38:26","detailUrl":"https://item.m.jd.com/product/4345173.html?utm#_source=androidapp&utm#_medium=appshare&utm#_campaign=t#_335139774&utm#_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t6037/35/2944615848/95178/6cd6cff0/594a3a10Na4ec7f39.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t6607/258/1025744923/75738/da120a2d/594a3a12Ne3e6bc56.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t6370/292/1057025420/64655/f87644e3/594a3a12N5b900606.jpg!q70.jpg","itemtype":1,"pid":45,"price":2999,"pscid":39,"salenum":4666,"sellerid":1,"subhead":"高清双摄,就是清晰!2000+1600万高清摄像头,6GB大内存+高通骁龙835处理器,性能怪兽!","title":"一加手机5 (A5000) 6GB+64GB 月岩灰 全网通 双卡双待 移动联通电信4G手机"},{"bargainPrice":6666,"createtime":"2017-10-10T16:01:31","detailUrl":"https://item.m.jd.com/product/5089273.html?utm#_source=androidapp&utm#_medium=appshare&utm#_campaign=t#_335139774&utm#_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t8284/363/1326459580/71585/6d3e8013/59b857f2N6ca75622.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t9346/182/1406837243/282106/68af5b54/59b8480aNe8af7f5c.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t8434/54/1359766007/56140/579509d9/59b85801Nfea207db.jpg!q70.jpg","itemtype":0,"pid":46,"price":234,"pscid":39,"salenum":868,"sellerid":2,"subhead":"【iPhone新品上市】新一代iPhone,让智能看起来更不一样","title":"Apple iPhone 8 Plus (A1864) 64GB 金色 移动联通电信4G手机"},{"bargainPrice":1599,"createtime":"2017-10-14T21:48:08","detailUrl":"https://item.m.jd.com/product/1993026402.html?utm#_source=androidapp&utm#_medium=appshare&utm#_campaign=t#_335139774&utm#_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t5863/302/8961270302/97126/41feade1/5981c81cNc1b1fbef.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7003/250/1488538438/195825/53bf31ba/5981c57eN51e95176.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5665/100/8954482513/43454/418611a9/5981c57eNd5fc97ba.jpg!q70.jpg","itemtype":2,"pid":47,"price":111,"pscid":39,"salenum":757,"sellerid":3,"subhead":"碳黑色 32GB 全网通 官方标配  1件","title":"锤子 坚果Pro 特别版 巧克力色 酒红色 全网通 移动联通电信4G手机 双卡双待 碳黑色 32GB 全网通"},{"bargainPrice":3455,"createtime":"2017-10-14T21:38:26","detailUrl":"https://item.m.jd.com/product/12224420750.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t9106/106/1785172479/537280/253bc0ab/59bf78a7N057e5ff7.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t9106/106/1785172479/537280/253bc0ab/59bf78a7N057e5ff7.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t8461/5/1492479653/68388/7255e013/59ba5e84N91091843.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t8461/5/1492479653/68388/7255e013/59ba5e84N91091843.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t8803/356/1478945529/489755/2a163ace/59ba5e84N7bb9a666.jpg!q70.jpg","itemtype":1,"pid":48,"price":222,"pscid":39,"salenum":656,"sellerid":4,"subhead":"【现货新品抢购】全面屏2.0震撼来袭,骁龙835处理器,四曲面陶瓷机","title":"小米(MI) 小米MIX2 手机 黑色 全网通 (6GB+64GB)【标配版】"},{"bargainPrice":1999,"createtime":"2017-10-10T16:09:02","detailUrl":"https://item.m.jd.com/product/5025971.html?utm#_source=androidapp&utm#_medium=appshare&utm#_campaign=t#_335139774&utm#_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t7210/232/3738666823/232298/9004583e/59c3a9a7N8de42e15.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t8356/82/2107423621/109733/c019b8c6/59c3a9a6Ne9a4bdd7.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t10219/74/25356012/171379/7d55e296/59c3a9a8N82fa6e02.jpg!q70.jpg","itemtype":0,"pid":49,"price":333,"pscid":39,"salenum":123,"sellerid":5,"subhead":"vivo X20 带你开启全面屏时代!逆光也清晰,照亮你的美!","title":"vivo X20 全面屏手机 全网通 4GB+64GB 金色 移动联通电信4G手机 双卡双待"},{"bargainPrice":3455,"createtime":"2017-10-14T21:48:08","detailUrl":"https://item.m.jd.com/product/12224420750.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t9106/106/1785172479/537280/253bc0ab/59bf78a7N057e5ff7.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t9106/106/1785172479/537280/253bc0ab/59bf78a7N057e5ff7.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t8461/5/1492479653/68388/7255e013/59ba5e84N91091843.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t8461/5/1492479653/68388/7255e013/59ba5e84N91091843.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t8803/356/1478945529/489755/2a163ace/59ba5e84N7bb9a666.jpg!q70.jpg","itemtype":2,"pid":50,"price":444,"pscid":39,"salenum":54,"sellerid":6,"subhead":"【现货新品抢购】全面屏2.0震撼来袭,骁龙835处理器,四曲面陶瓷机","title":"小米(MI) 小米MIX2 手机 黑色 全网通 (6GB+64GB)【标配版】"},{"bargainPrice":3455,"createtime":"2017-10-14T21:38:26","detailUrl":"https://item.m.jd.com/product/12224420750.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t9106/106/1785172479/537280/253bc0ab/59bf78a7N057e5ff7.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t9106/106/1785172479/537280/253bc0ab/59bf78a7N057e5ff7.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t8461/5/1492479653/68388/7255e013/59ba5e84N91091843.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t8461/5/1492479653/68388/7255e013/59ba5e84N91091843.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t8803/356/1478945529/489755/2a163ace/59ba5e84N7bb9a666.jpg!q70.jpg","itemtype":1,"pid":51,"price":555,"pscid":39,"salenum":424,"sellerid":7,"subhead":"【现货新品抢购】全面屏2.0震撼来袭,骁龙835处理器,四曲面陶瓷机","title":"小米(MI) 小米MIX2 手机 黑色 全网通 (6GB+64GB)【标配版】"},{"bargainPrice":3455,"createtime":"2017-10-03T23:53:28","detailUrl":"https://item.m.jd.com/product/12224420750.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t9106/106/1785172479/537280/253bc0ab/59bf78a7N057e5ff7.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t9106/106/1785172479/537280/253bc0ab/59bf78a7N057e5ff7.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t8461/5/1492479653/68388/7255e013/59ba5e84N91091843.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t8461/5/1492479653/68388/7255e013/59ba5e84N91091843.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t8803/356/1478945529/489755/2a163ace/59ba5e84N7bb9a666.jpg!q70.jpg","itemtype":0,"pid":52,"price":666,"pscid":39,"salenum":212,"sellerid":8,"subhead":"【现货新品抢购】全面屏2.0震撼来袭,骁龙835处理器,四曲面陶瓷机","title":"小米(MI) 小米MIX2 手机 黑色 全网通 (6GB+64GB)【标配版】"},{"bargainPrice":2999,"createtime":"2017-10-14T21:48:08","detailUrl":"https://item.m.jd.com/product/2385655.html?utm#_source=androidapp&utm#_medium=appshare&utm#_campaign=t#_335139774&utm#_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t2068/298/2448145915/157953/7be197df/56d51a42Nd86f1c8e.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t2437/128/1687178395/117431/bcc190c1/56d3fcbaNb2963d21.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t2467/222/2263160610/95597/927b8a2f/56d3eafeNdecebeb6.jpg!q70.jpg","itemtype":2,"pid":53,"price":777,"pscid":39,"salenum":0,"sellerid":9,"subhead":"Super AMOLED三星双曲面2K 屏,支持无线充电!","title":"三星 Galaxy S7 edge(G9350)4GB+32GB 铂光金 移动联通电信4G手机 双卡双待"},{"bargainPrice":3455,"createtime":"2017-10-03T23:53:28","detailUrl":"https://item.m.jd.com/product/12224420750.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t9106/106/1785172479/537280/253bc0ab/59bf78a7N057e5ff7.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t9106/106/1785172479/537280/253bc0ab/59bf78a7N057e5ff7.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t8461/5/1492479653/68388/7255e013/59ba5e84N91091843.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t8461/5/1492479653/68388/7255e013/59ba5e84N91091843.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t8803/356/1478945529/489755/2a163ace/59ba5e84N7bb9a666.jpg!q70.jpg","itemtype":0,"pid":54,"price":888,"pscid":39,"salenum":7575,"sellerid":10,"subhead":"【现货新品抢购】全面屏2.0震撼来袭,骁龙835处理器,四曲面陶瓷机","title":"小米(MI) 小米MIX2 手机 黑色 全网通 (6GB+64GB)【标配版】"}]

* page : 1

*/

publicStringmsg;

publicStringcode;

publicStringpage;

publicListdata;

public static classDataBean {

/**

* bargainPrice : 99.0

* createtime : 2017-10-14T21:38:26

* detailUrl : https://item.m.jd.com/product/4345173.html?utm#_source=androidapp&utm#_medium=appshare&utm#_campaign=t#_335139774&utm#_term=QQfriends

* images : https://m.360buyimg.com/n0/jfs/t6037/35/2944615848/95178/6cd6cff0/594a3a10Na4ec7f39.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t6607/258/1025744923/75738/da120a2d/594a3a12Ne3e6bc56.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t6370/292/1057025420/64655/f87644e3/594a3a12N5b900606.jpg!q70.jpg

* itemtype : 1

* pid : 45

* price : 2999.0

* pscid : 39

* salenum : 4666

* sellerid : 1

* subhead : 高清双摄,就是清晰!2000+1600万高清摄像头,6GB大内存+高通骁龙835处理器,性能怪兽!

* title : 一加手机5 (A5000) 6GB+64GB 月岩灰 全网通 双卡双待 移动联通电信4G手机

*/

public doublebargainPrice;

publicStringcreatetime;

publicStringdetailUrl;

publicStringimages;

public intitemtype;

public intpid;

public doubleprice;

public intpscid;

public intsalenum;

public intsellerid;

publicStringsubhead;

publicStringtitle;

}

}

deleteBean

public classdeleteBean {

/**

* msg : 删除购物车成功

* code : 0

*/

publicStringmsg;

publicStringcode;

}

queryBean

public classqueryBean {

privateStringmsg;

privateStringcode;

privateListdata;

publicString getMsg() {

returnmsg;

}

public voidsetMsg(String msg) {

this.msg= msg;

}

publicString getCode() {

returncode;

}

public voidsetCode(String code) {

this.code= code;

}

publicList getData() {

returndata;

}

public voidsetData(List data) {

this.data= data;

}

public static classDataBean {

privateStringsellerName;

privateStringsellerid;

privateListlist;

publicString getSellerName() {

returnsellerName;

}

public voidsetSellerName(String sellerName) {

this.sellerName= sellerName;

}

publicString getSellerid() {

returnsellerid;

}

public voidsetSellerid(String sellerid) {

this.sellerid= sellerid;

}

publicList getList() {

returnlist;

}

public voidsetList(List list) {

this.list= list;

}

public static classListBean {

private doublebargainPrice;

privateStringcreatetime;

privateStringdetailUrl;

privateStringimages;

private intnum;

private intpid;

private doubleprice;

private intpscid;

private intselected;

private intsellerid;

privateStringsubhead;

privateStringtitle;

private intisFirst=1;//1为显示商铺, 2为隐藏商铺

private booleanitem_check;//每个商品的选中状态

private booleanshop_check;//商店的选中状态

public intgetIsFirst() {

returnisFirst;

}

public voidsetIsFirst(intisFirst) {

this.isFirst= isFirst;

}

public booleanisItem_check() {

returnitem_check;

}

public voidsetItem_check(booleanitem_check) {

this.item_check= item_check;

}

public booleanisShop_check() {

returnshop_check;

}

public voidsetShop_check(booleanshop_check) {

this.shop_check= shop_check;

}

public doublegetBargainPrice() {

returnbargainPrice;

}

public voidsetBargainPrice(doublebargainPrice) {

this.bargainPrice= bargainPrice;

}

publicString getCreatetime() {

returncreatetime;

}

public voidsetCreatetime(String createtime) {

this.createtime= createtime;

}

publicString getDetailUrl() {

returndetailUrl;

}

public voidsetDetailUrl(String detailUrl) {

this.detailUrl= detailUrl;

}

publicString getImages() {

returnimages;

}

public voidsetImages(String images) {

this.images= images;

}

public intgetNum() {

returnnum;

}

public voidsetNum(intnum) {

this.num= num;

}

public intgetPid() {

returnpid;

}

public voidsetPid(intpid) {

this.pid= pid;

}

public doublegetPrice() {

returnprice;

}

public voidsetPrice(doubleprice) {

this.price= price;

}

public intgetPscid() {

returnpscid;

}

public voidsetPscid(intpscid) {

this.pscid= pscid;

}

public intgetSelected() {

returnselected;

}

public voidsetSelected(intselected) {

this.selected= selected;

}

public intgetSellerid() {

returnsellerid;

}

public voidsetSellerid(intsellerid) {

this.sellerid= sellerid;

}

publicString getSubhead() {

returnsubhead;

}

public voidsetSubhead(String subhead) {

this.subhead= subhead;

}

publicString getTitle() {

returntitle;

}

public voidsetTitle(String title) {

this.title= title;

}

}

}

}

deleteModel

packagecom.example.shoppingcar.model;

importcom.example.shoppingcar.bean.deleteBean;

importcom.example.shoppingcar.utils.APIFactory;

importjava.util.HashMap;

importjava.util.Map;

importrx.Observer;

/**

* date:2017/12/20

* author:张伟(Administrator)

* desc:

*/

public classdeleteModel {

public voiddelete(String pid,finaldeleteModelCallBack deleteBack) {

Map map =newHashMap<>();

map.put("uid","uid");

map.put("pid", pid);

APIFactory.getInstance().delete(map,newObserver() {

@Override

public voidonCompleted() {

}

@Override

public voidonError(Throwable e) {

}

@Override

public voidonNext(deleteBean deleteBean) {

deleteBack.success(deleteBean);

}

});

}

}

deleteModelCallBack

public interfacedeleteModelCallBack {

voidsuccess(deleteBean deleteBean);

voidfailure();

}

ModelCallBack

public interfaceModelCallBack {

voidsuccess(CartBean cartBean);

voidfailure(Exception e);

}

MyModel

public classMyModel {

public voidcart(finalModelCallBack modelCallBack) {

Map map =newHashMap<>();

map.put("keywords","手机");

APIFactory.getInstance().cart(map,newObserver() {

@Override

public voidonCompleted() {

}

@Override

public voidonError(Throwable e) {

}

@Override

public voidonNext(CartBean cartBean) {

modelCallBack.success(cartBean);

}

});

}

}

queryModel

public classqueryModel {

public voidquery(finalqueryModelCallBack queryBack) {

Map map =newHashMap<>();

map.put("uid","4421");

APIFactory.getInstance().query(map,newObserver() {

@Override

public voidonCompleted() {

}

@Override

public voidonError(Throwable e) {

}

@Override

public voidonNext(queryBean queryBean) {

queryBack.success(queryBean);

}

});

}

}

queryModelCallBack

public interfacequeryModelCallBack {

voidsuccess(queryBean queryBean);

voidfailure();

}

cartPresenter


public classcartPresenter {

ViewCallBackviewCallBack;

MyModelmyModel;

publiccartPresenter(ViewCallBack viewCallBack) {

this.viewCallBack= viewCallBack;

this.myModel=newMyModel();

}

public voidcartFF() {

myModel.cart(newModelCallBack() {

@Override

public voidsuccess(CartBean cartBean) {

viewCallBack.success(cartBean);

}

@Override

public voidfailure(Exception e) {

}

});

}

public voiddetach() {

this.viewCallBack=null;

}

}

deletePresenter

public classdeletePresenter {

deleteModeldeleteModel;

deleteViewdeleteView;

publicdeletePresenter(com.example.shoppingcar.view.deleteView deleteView) {

this.deleteView= deleteView;

this.deleteModel=newdeleteModel();

}

public voiddeleteFF(String pid) {

deleteModel.delete(pid,newdeleteModelCallBack() {

@Override

public voidsuccess(deleteBean deleteBean) {

deleteView.success(deleteBean);

}

@Override

public voidfailure() {

}

});

}

}

queryPresenter

public classqueryPresenter {

queryViewqueryView;

queryModelqueryModel;

publicqueryPresenter(queryView queryView) {

this.queryView= queryView;

this.queryModel=newqueryModel();

}

public voidqueryFF() {

queryModel.query(newqueryModelCallBack() {

@Override

public voidsuccess(queryBean queryBean) {

queryView.success(queryBean);

}

@Override

public voidfailure() {

}

});

}

public voiddetach() {

this.queryView=null;

}

}

deleteView

public interfacedeleteView {

voidsuccess(deleteBean deleteBean);

voidfailure();

}

queryView

public interfacequeryView{

voidsuccess(queryBean queryBean);

voidfailure();

}

ViewCallBack


public interfaceViewCallBack {

voidsuccess(CartBean cartBean);

voidfailure(Exception e);

}


购物车XML

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:padding="20dp">

android:id="@+id/back"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerVertical="true"

android:text="<"

android:textSize="23sp"/>

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerHorizontal="true"

android:text="购物车"

android:textSize="23sp"

android:textStyle="bold"/>

android:id="@+id/bianji"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentRight="true"

android:layout_centerVertical="true"

android:text="编辑"

android:textSize="20sp"/>

android:layout_width="match_parent"

android:layout_height="1dp"

android:layout_marginTop="5dp"

android:background="#D4D4D4"/>

android:id="@+id/recycler_View"

android:layout_width="match_parent"

android:layout_height="0dp"

android:layout_weight="1"/>

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_alignParentBottom="true"

android:gravity="center_vertical"

android:orientation="horizontal">

android:id="@+id/quanxuan"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerVertical="true"

android:layout_marginLeft="10dp"

android:background="@drawable/shopcart_unselected"

android:button="@null"/>

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerVertical="true"

android:layout_marginLeft="40dp"

android:text="全选"

android:textSize="23sp"

android:textStyle="bold"/>

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerInParent="true"

android:layout_centerVertical="true"

android:layout_marginLeft="10dp"

android:layout_marginRight="70dp"

android:orientation="vertical">

android:id="@+id/total_price"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="总价 : ¥0元"

android:textColor="#e53e42"

android:textSize="20sp"/>

android:id="@+id/total_num"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignBottom="@+id/total_price"

android:text="共0件商品"

android:textSize="20sp"/>

android:id="@+id/quzhifu"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentRight="true"

android:layout_centerVertical="true"

android:background="#FC7903"

android:gravity="center"

android:padding="30dp"

android:text="去支付"

android:textColor="#fff"

android:textSize="22sp"/>

android:id="@+id/linear_shanchu"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentRight="true"

android:layout_marginLeft="30dp"

android:orientation="horizontal"

android:visibility="gone">

android:layout_width="wrap_content"

android:layout_height="match_parent"

android:background="#FC7903"

android:gravity="center"

android:padding="20dp"

android:paddingLeft="30dp"

android:paddingRight="30dp"

android:text="分享宝贝"

android:textColor="#fff"

android:textSize="20sp"/>

android:layout_width="wrap_content"

android:layout_height="match_parent"

android:background="#FC7903"

android:gravity="center"

android:padding="20dp"

android:paddingLeft="30dp"

android:paddingRight="30dp"

android:text="移到收藏夹"

android:textColor="#fff"

android:textSize="20sp"/>

android:id="@+id/shanchu"

android:layout_width="wrap_content"

android:layout_height="match_parent"

android:background="#DC143C"

android:gravity="center"

android:padding="30dp"

android:paddingLeft="30dp"

android:paddingRight="30dp"

android:text="删除"

android:textColor="#fff"

android:textSize="20sp"/>


详情XML

android:id="@+id/GWC"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:gravity="center"

android:text="点击进入"

android:textSize="20sp"

android:textStyle="bold"/>

android:id="@+id/XQ_Recy"

android:layout_width="match_parent"

android:layout_height="match_parent">

加减器XML

android:background="#F2F1F1"

android:textSize="20sp"

android:id="@+id/reverse"

android:text="一"

android:layout_width="40dp"

android:layout_height="40dp"/>

android:gravity="center"

android:background="#FAFAFA"

android:textStyle="bold"

android:textSize="23sp"

android:layout_width="40dp"

android:layout_height="40dp"

android:text="1"

android:id="@+id/count"

/>

android:id="@+id/add"

android:background="#F2F1F1"

android:textSize="25sp"

android:text="+"

android:layout_width="40dp"

android:layout_height="40dp"/>

购物车Item

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:background="#FFFFFF"

android:padding="5dp">

android:id="@+id/shop_checkbox"

android:layout_width="50dp"

android:layout_height="50dp"

android:layout_centerVertical="true"/>

android:id="@+id/shop_name"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerVertical="true"

android:layout_marginLeft="35dp"

android:text="良品铺子"

android:textSize="23sp"

android:textStyle="bold"/>

android:id="@+id/item_bianji"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentRight="true"

android:layout_centerVertical="true"

android:text="编辑"

android:textSize="20sp"/>

android:layout_width="match_parent"

android:layout_height="1dp"

android:background="#D4D4D4"/>

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:background="#F2F2F2"

android:gravity="center_vertical"

android:orientation="horizontal">

android:id="@+id/item_checkbox"

android:layout_width="wrap_content"

android:layout_height="wrap_content"/>

android:id="@+id/item_face"

android:layout_width="140dp"

android:layout_height="140dp"

android:src="@mipmap/ic_launcher"

fresco:failureImage="@mipmap/ic_launcher"

fresco:placeholderImage="@mipmap/ic_launcher"/>

android:layout_width="0dp"

android:layout_height="wrap_content"

android:layout_marginLeft="10dp"

android:layout_weight="1"

android:orientation="vertical">

android:id="@+id/item_name"

android:layout_width="wrap_content"

android:layout_height="0dp"

android:layout_weight="1"

android:text="三只松鼠"

android:textSize="20sp"/>

android:id="@+id/item_price"

android:layout_width="wrap_content"

android:layout_height="0dp"

android:layout_weight="1"

android:text="299"

android:textColor="#f00"

android:textSize="23sp"/>

android:id="@+id/custom_jiajian"

android:layout_width="wrap_content"

android:layout_height="0dp"

android:layout_weight="1"

android:visibility="gone"/>

android:id="@+id/item_yansechima"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="颜色 : 黑色 ; 尺码: 29"

android:textSize="20sp"

android:visibility="gone"/>


android:visibility="gone"

android:id="@+id/item_delete"

android:layout_marginRight="10dp"

android:src="@drawable/shopcart_delete"

android:layout_width="30dp"

android:layout_height="30dp" />-->

android:id="@+id/item_delete"

android:layout_width="wrap_content"

android:layout_height="match_parent"

android:background="#FC7903"

android:gravity="center"

android:padding="20dp"

android:text="删除"

android:textColor="#fff"

android:textSize="23sp"

android:visibility="gone"/>

android:layout_width="match_parent"

android:layout_height="1dp"

android:background="#D4D4D4"/>

详情XML

android:layout_width="match_parent"

android:layout_height="160dp"

android:orientation="horizontal">

android:id="@+id/xq_fresco"

android:layout_width="200dp"

android:layout_height="160dp"

android:src="@mipmap/ic_launcher"

fresco:failureImage="@mipmap/ic_launcher"

fresco:placeholderImage="@mipmap/ic_launcher"/>

android:layout_width="match_parent"

android:layout_height="160dp"

android:orientation="vertical">

android:id="@+id/xq_name"

android:layout_width="match_parent"

android:layout_height="0dp"

android:layout_weight="1"

android:gravity="center"/>

android:id="@+id/xq_price"

android:layout_width="match_parent"

android:layout_height="0dp"

android:layout_weight="1"

android:gravity="center"/>

android:id="@+id/xq_btn"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:gravity="center"

android:text="加入购物车"/>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,117评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,328评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,839评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,007评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,384评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,629评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,880评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,593评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,313评论 1 243
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,575评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,066评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,392评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,052评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,082评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,844评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,662评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,575评论 2 270