-------------------------购物车页面布局文件-----------------------------
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:background="#ff00f0" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="match_parent" android:layout_height="40dp" android:gravity="center" android:text="购物车" android:textColor="#BB1F35" android:textSize="18sp" /> <View android:layout_width="match_parent" android:layout_height="1dp" android:background="#F444" /> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <android.support.v7.widget.RecyclerView android:id="@+id/shopping_cart_data" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1"></android.support.v7.widget.RecyclerView> <View android:layout_width="match_parent" android:layout_height="1dp" android:background="#F444" /> <RelativeLayout android:layout_width="match_parent" android:layout_height="45dp" android:background="#FFFF"> <CheckBox android:id="@+id/all_cbx" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_marginLeft="8dp" android:drawablePadding="6dp" android:text="全选" android:textColor="#7F7F7F" android:textSize="14sp" /> <!--android:visibility="gone"--> <TextView android:id="@+id/all_money_tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_marginLeft="8dp" android:layout_toRightOf="@id/all_cbx" android:text="总额: ¥ 0" android:textColor="#F33F3F" android:textSize="20sp" /> <TextView android:id="@+id/settle_tv" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_alignParentRight="true" android:background="#CC0000" android:clickable="true" android:gravity="center" android:paddingLeft="15dp" android:paddingRight="15dp" android:text="去结算(0)" android:textColor="@android:color/white" android:textSize="18sp" /> </RelativeLayout> </LinearLayout> </LinearLayout>
----------------------------------购物车Fragment-----------------------------------------------------
/**
* 计算总金额
* @param lists
*/
private void jiSuanPrice(List<GsonCarData.DataBean> lists) {
totalPrice = 0;//在调用方法之前先将总价变成方防止累加
for (int i = 0; i < lists.size(); i++) {
//的到商店中的商品的集合
List<GsonCarData.DataBean.ListBean> shoppingList = lists.get(i).getList();
Observable.from(shoppingList)
.filter(new Func1<GsonCarData.DataBean.ListBean, Boolean>() {
@Override
public Boolean call(GsonCarData.DataBean.ListBean listBean) {
return listBean.getSelected() == 1;
}
}).subscribe(new Action1<GsonCarData.DataBean.ListBean>() {
@Override
public void call(GsonCarData.DataBean.ListBean listBean) {
//得到单价
float price = listBean.getPrice();
//得到数量
int num = listBean.getNum();
//numList.add((int) (price*num));
totalPrice += (int) (price*num);
Log.d("pppp", "call: "+price+"数量:"+num);
}
});
}
//商品总价
mAllMoneyTv.setText(totalPrice+"");
}
package com.example.day0629_moni_yk.view.fragment; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.CheckBox; import android.widget.TextView; import android.widget.Toast; import com.example.day0629_moni_yk.R; import com.example.day0629_moni_yk.adapter.ShoppingCartAdapter; import com.example.day0629_moni_yk.bean.Constant; import com.example.day0629_moni_yk.bean.GsonShoppingCartData; import com.example.day0629_moni_yk.util.RequestDataUtil; import com.google.gson.Gson; import java.util.List; /** * Created by John on 2018/6/29 0029. */ public class FragmentShoppingCart extends Fragment implements View.OnClickListener { private View view; private RecyclerView mShoppingCartData; /** * 全选 */ private CheckBox mAllCbx; /** * 总额: ¥ 0 */ private TextView mAllMoneyTv; /** * 去结算(0) */ private TextView mSettleTv; private RequestDataUtil requestDataUtil; private List<GsonShoppingCartData.DataBean> shoppingList; private String myUpdateCars; private List<GsonShoppingCartData.DataBean.ListBean> list; private boolean bian = false; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { view = inflater.inflate(R.layout.fragment_shoppingcart, container, false); return view; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); initView(view); //请求网络数据 requestDataFunction(); } private void requestDataFunction() {//请求数据 //拼接接口数据 String myUrl = Constant.ShoppingCartUrl + "?uid=15909"; Log.d("ppp", "onRequest: "+myUrl); requestDataUtil.getRequestJsonData(myUrl, new RequestDataUtil.IcallBack() { @Override public void onRequest(String jsonData) { //请求数据成功 解析数据 Gson gson = new Gson(); GsonShoppingCartData data = gson.fromJson(jsonData, GsonShoppingCartData.class); shoppingList = data.getData(); //设置布局管理器 mShoppingCartData.setLayoutManager(new LinearLayoutManager(getContext(),LinearLayoutManager.VERTICAL,false)); //设置适配器 final ShoppingCartAdapter adapter = new ShoppingCartAdapter(getContext(), shoppingList); mShoppingCartData.setAdapter(adapter); getPrice();//计算总价 //接口回调 adapter.setPrantDataState(new ShoppingCartAdapter.PSCIcallBack() { @Override public void getPrantDataState(int sellerid, int pid, int selected, int nums) {//这个是加减数据与子复选框 //请求更新购物车的接口 //拼接地址https://www.zhaoapi.cn/product/updateCarts?uid=71&sellerid=1&pid=1&selected=0&num=10 String myUpdateCar = Constant.UpdataShoppingCartUrl+"?uid=15909"+"&sellerid="+sellerid+"&pid="+pid+"&selected="+selected+"&num="+nums; requestDataUtil.getRequestJsonData(myUpdateCar, new RequestDataUtil.IcallBack() { @Override public void onRequest(String jsonData) { getPrice();//计算总价 requestDataFunction(); } }); } @Override public void getShangJiaChecked(int position, String sellerid,boolean b) {//这个是父复选框的接口回调 for (int i = 0; i < shoppingList.size(); i++) { if(position == i){ //根据传过来的下标 得到你点击下面的商品集合 list = shoppingList.get(position).getList(); } } for (int j = 0; j <list.size() ; j++) { if(b==true){ myUpdateCars = Constant.UpdataShoppingCartUrl+"" + "?uid=15909"+"&sellerid="+list.get(j).getSellerid()+"&pid="+list.get(j).getPid()+"&selected="+1+"&num="+list.get(j).getNum(); }else if(b==false){ myUpdateCars = Constant.UpdataShoppingCartUrl+"" + "?uid=15909"+"&sellerid="+list.get(j).getSellerid()+"&pid="+list.get(j).getPid()+"&selected="+0+"&num="+list.get(j).getNum(); } Log.d("iiiii", "getShangJiaChecked: "+myUpdateCars); requestDataUtil.getRequestJsonData(myUpdateCars, new RequestDataUtil.IcallBack() { @Override public void onRequest(String jsonData) { getPrice();//计算总价 requestDataFunction(); bian = true; Log.d("iiiii", "getShangJiaChecked: "+bian); } }); } /*if(bian == true){ requestDataFunction(); }*/ /*requestDataUtil.getRequestJsonData(myUpdateCars, new RequestDataUtil.IcallBack() { @Override public void onRequest(String jsonData) { getPrice();//计算总价 requestDataFunction(); } });*/ } }); } }); } /** * 计算价格 */ private void getPrice() { int allprice = 0; for (int i = 0; i < shoppingList.size(); i++) { for (int j = 0; j < shoppingList.get(i).getList().size(); j++) { if(shoppingList.get(i).getList().get(j).getSelected() == 1){ int price = (int)shoppingList.get(i).getList().get(j).getPrice(); int n = shoppingList.get(i).getList().get(j).getNum(); Log.d("ttt",n+" n "); allprice += price * n; } } } mAllMoneyTv.setText("¥"+allprice+".00"); } /** * 初始化 * @param view */ private void initView(View view) { mShoppingCartData = (RecyclerView) view.findViewById(R.id.shopping_cart_data); mAllCbx = (CheckBox) view.findViewById(R.id.all_cbx); mAllMoneyTv = (TextView) view.findViewById(R.id.all_money_tv); mSettleTv = (TextView) view.findViewById(R.id.settle_tv); mSettleTv.setOnClickListener(this); //得到网络请求工具类 requestDataUtil = RequestDataUtil.getInstance(); } @Override public void onClick(View v) { switch (v.getId()) { default: break; case R.id.settle_tv://结算总价 Toast.makeText(getContext(), "开始结算总价", Toast.LENGTH_SHORT).show(); break; } } }
-----------------------------------------购物车适配器----------------------------------------
package com.example.day0629_moni_yk.adapter; import android.content.Context; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.TextView; import com.example.day0629_moni_yk.R; import com.example.day0629_moni_yk.bean.GsonShoppingCartData; import java.util.List; /** * Created by John on 2018/6/29 0029. */ public class ShoppingCartAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { private Context context; private List<GsonShoppingCartData.DataBean> shoppingList; private int i = 0; public ShoppingCartAdapter(Context context, List<GsonShoppingCartData.DataBean> shoppingList) { this.context = context; this.shoppingList = shoppingList; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(context).inflate(R.layout.shoppingcart_layout, parent, false); ViewHolderShopping holderShopping = new ViewHolderShopping(view); return holderShopping; } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) { ViewHolderShopping holderShopping = (ViewHolderShopping) holder; //绑定数据 holderShopping.mShopName.setText(shoppingList.get(position).getSellerName()); //得到集合 设置适配器 List<GsonShoppingCartData.DataBean.ListBean> list = shoppingList.get(position).getList(); //设置布局管理器 holderShopping.mShopRecycle.setLayoutManager(new LinearLayoutManager(context,LinearLayoutManager.VERTICAL,false)); ShoppingCartChildrenAdapter adapter = new ShoppingCartChildrenAdapter(context,list); holderShopping.mShopRecycle.setAdapter(adapter); //接口回调 adapter.setDataState(new ShoppingCartChildrenAdapter.SCIcallBack() { @Override public void getDataState(int sellerid, int pid, int selected, int nums) { if(pscIcallBack!=null){ pscIcallBack.getPrantDataState(sellerid,pid,selected,nums); } } }); //实现全选 List<GsonShoppingCartData.DataBean.ListBean> listBeans = shoppingList.get(position).getList(); for (int j = 0; j < listBeans.size() ; j++) { if(listBeans.size() == 1 && listBeans.get(j).getSelected() == 1){ holderShopping.mShopCheckBox.setChecked(true); //不用刷新适配器 因为你在点击子的复选框时之前就写过重新请求数据的功能 }else { holderShopping.mShopCheckBox.setChecked(false); } if(listBeans.size() > 1){ if(listBeans.get(j).getSelected() == 1){ i++;//设置一个变量用于存储为选中状态的条目有多少 判断他如果与长度一样的话就将商家设置为选中状态 } Log.d("changdu", "onBindViewHolder: i="+ i +"size="+listBeans.size()); if(i == listBeans.size()){ holderShopping.mShopCheckBox.setChecked(true); }else { holderShopping.mShopCheckBox.setChecked(false); } } } //的到复选框是否为选中状态 holderShopping.mShopCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton compoundButton, boolean b) { if(pscIcallBack!=null){ String sellerid = shoppingList.get(position).getSellerid(); pscIcallBack.getShangJiaChecked(position,sellerid,b); } } }); } @Override public int getItemCount() { return shoppingList.size(); } static class ViewHolderShopping extends RecyclerView.ViewHolder{ View view; CheckBox mShopCheckBox; TextView mShopName; RecyclerView mShopRecycle; ViewHolderShopping(View view) { super(view); this.view = view; this.mShopCheckBox = (CheckBox) view.findViewById(R.id.shop_checkBox); this.mShopName = (TextView) view.findViewById(R.id.shop_name); this.mShopRecycle = (RecyclerView) view.findViewById(R.id.shop_recycle); } } //1.定义接口 public interface PSCIcallBack{ void getPrantDataState(int sellerid,int pid,int selected,int nums);//得到商品此时的状态值。。。。 参数还没写 void getShangJiaChecked(int position,String sellerid,boolean b);//商家是否选中 } //2.声明接口对象 private PSCIcallBack pscIcallBack; //3.提供外部调用的方法 public void setPrantDataState(PSCIcallBack pscIcallBack){ this.pscIcallBack = pscIcallBack; } }
--------------------------------购物车子适配器-----------------------------------
package com.example.day0629_moni_yk.adapter; import android.content.Context; import android.net.Uri; import android.support.v7.widget.RecyclerView; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.TextView; import com.example.day0629_moni_yk.R; import com.example.day0629_moni_yk.bean.GsonShoppingCartData; import com.example.day0629_moni_yk.view.CombinationView; import com.facebook.drawee.view.SimpleDraweeView; import java.util.List; /** * Created by John on 2018/6/29 0029. */ public class ShoppingCartChildrenAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { private Context context; private List<GsonShoppingCartData.DataBean.ListBean> list; public ShoppingCartChildrenAdapter(Context context, List<GsonShoppingCartData.DataBean.ListBean> list) { this.context = context; this.list = list; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(context).inflate(R.layout.shoppingcartchildren_layout, parent, false); ViewHolderShoppingChildren holderShoppingChildren = new ViewHolderShoppingChildren(view); return holderShoppingChildren; } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) { final ViewHolderShoppingChildren holderShoppingChildren = (ViewHolderShoppingChildren) holder; //绑定数据 holderShoppingChildren.mTxtShoppingTitle.setText(list.get(position).getTitle());//设置标题 holderShoppingChildren.mTxtShoppingPrice.setText("¥"+list.get(position).getPrice()+"");//设置价格 //得到商品的数量 int num = list.get(position).getNum(); holderShoppingChildren.mJiaJian.setNums(num);//设置显示的商品的数量 //下载图片 String path = list.get(position).getImages().split("\\|")[0]; Uri uri = Uri.parse(path); holderShoppingChildren.mShoppingChildrenImage.setImageURI(uri); //得到是否未选中状态值 设置是否为选中状态 int selected = list.get(position).getSelected(); if(selected == 0){ holderShoppingChildren.mCheckBox.setChecked(false); }else if(selected == 1){ holderShoppingChildren.mCheckBox.setChecked(true); } //接口回调的到文本框得值 holderShoppingChildren.mJiaJian.setShoppingNum(new CombinationView.IcallBackNum() { @Override public void getNnm(int nums) { Log.d("kkkk", "getNnm: "+nums); //得到数据信息 uid=71&sellerid=1&pid=1&selected=0&num=10 int sellerid = list.get(position).getSellerid(); int pid = list.get(position).getPid(); int selecteds = list.get(position).getSelected(); if(scIcallBack != null){ scIcallBack.getDataState(sellerid,pid,selecteds,nums); } } }); //复选框的状态值改变 holderShoppingChildren.mCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton compoundButton, boolean b) { int shoppingNumss = holderShoppingChildren.mJiaJian.getShoppingNumss();//得到商品的数量 int sellerid = list.get(position).getSellerid(); int pid = list.get(position).getPid(); int xuanZhong = 0; if(b == false){ xuanZhong = 0; }else { xuanZhong = 1; } if(scIcallBack != null){ scIcallBack.getDataState(sellerid,pid,xuanZhong,shoppingNumss); } } }); } @Override public int getItemCount() { return list.size(); } static class ViewHolderShoppingChildren extends RecyclerView.ViewHolder { View view; CheckBox mCheckBox; SimpleDraweeView mShoppingChildrenImage; TextView mTxtShoppingTitle; TextView mTxtShoppingPrice; CombinationView mJiaJian; ViewHolderShoppingChildren(View view) { super(view); this.view = view; this.mCheckBox = (CheckBox) view.findViewById(R.id.checkBox); this.mShoppingChildrenImage = (SimpleDraweeView) view.findViewById(R.id.shopping_children_image); this.mTxtShoppingTitle = (TextView) view.findViewById(R.id.txt_shopping_title); this.mTxtShoppingPrice = (TextView) view.findViewById(R.id.txt_shopping_price); this.mJiaJian = (CombinationView) view.findViewById(R.id.jia_jian); } } //1.定义接口 public interface SCIcallBack{ void getDataState(int sellerid,int pid,int selected,int nums);//得到商品此时的状态值。。。。 参数还没写 } //2.声明接口对象 private SCIcallBack scIcallBack; //3.提供外部调用的方法 public void setDataState(SCIcallBack scIcallBack){ this.scIcallBack = scIcallBack; } }

1056

被折叠的 条评论
为什么被折叠?



