購物車

詳情頁面

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="加入購物車"/>

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。