购物车页面

xiaoxiao2025-11-05  3

GouPresenter package com.bwie.jd.presenter;

import com.bwie.jd.model.bean.AddBean; import com.bwie.jd.model.http.GouModel; import com.bwie.jd.view.IView.IGouView;

import java.lang.ref.WeakReference;

public class GouPresenter implements GouModel.ScuMod{ //弱引用解绑 WeakReference view; GouModel model;

public GouPresenter( IGouView view) { attach(view); model = new GouModel(); model.setScuMod(this); } @Override public void MScus(AddBean bean) { view.get().onsuccer(bean); } //我们在写一个方法拿到我们的请求 public void ShowPer(){ model.Succes(); } //绑定 public void attach(IGouView views){ view = new WeakReference(views); } //解绑方法 public void detach(){ view.clear(); }

} GouModel package com.bwie.jd.model.http;

import android.util.Log;

import com.bwie.jd.model.bean.AddBean; import io.reactivex.Observable; import io.reactivex.Observer; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.Disposable; import io.reactivex.schedulers.Schedulers; import okhttp3.OkHttpClient;

public class GouModel { ScuMod scuMod;

public void setScuMod(ScuMod scuMod) { this.scuMod = scuMod; } //自己定义一个请求方法 public void Succes() { OkHttpClient ok = new OkHttpClient.Builder() .build(); //请求数据 Observable<AddBean> gets = HttpUtils.getHttpUtilsInstance().apiClient.gets(91); gets.observeOn(AndroidSchedulers.mainThread()) .subscribeOn(Schedulers.io()) .subscribe(new Observer<AddBean>() { @Override public void onSubscribe(Disposable d) { } @Override public void onNext(AddBean bean) { scuMod.MScus(bean); Log.e("===========", bean.getData().get(0).getSellerName()); } @Override public void onError(Throwable e) { } @Override public void onComplete() { } }); } //定义一个接口 public interface ScuMod{ void MScus(AddBean bean); }

} ShopAdapter package com.bwie.jd.view.adapter;

import android.content.Context; import android.net.Uri; import android.support.v7.widget.RecyclerView; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.CheckBox; import android.widget.TextView;

import com.bwie.jd.R; import com.bwie.jd.model.bean.AddBean; import com.bwie.jd.view.util.plusview; import com.facebook.drawee.backends.pipeline.Fresco; import com.facebook.drawee.interfaces.DraweeController; import com.facebook.drawee.view.SimpleDraweeView;

import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map;

public class ShopAdapter extends RecyclerView.Adapter<ShopAdapter.ViewHolder>{

private Context context;//传入上下文 private List<AddBean.DataBean.ListBean> list;//bean包的集合 //存放商家的集合 private Map<String, String> map = new HashMap<>(); //有参构造 public ShopAdapter(Context context) { this.context = context; } /** * 添加数据并更新 */ public void add(AddBean bean) { //判段如果list是空的 if (this.list == null) { //那就把listNew出来 this.list = new ArrayList<>(); } //遍历商家 for (AddBean.DataBean shop : bean.getData()) { map.put(shop.getSellerid(), shop.getSellerName()); // 遍历商品 for (int i = 0; i < shop.getList().size(); i++) { this.list.add(shop.getList().get(i)); } } setFirst(this.list); //控制是否显示商家 notifyDataSetChanged();//更新数据 } /** * 设置数据源, 控制显示商家 * * @param list 这里把集合给setFirst这个方法就是要设置商品的显示与阴藏 */ private void setFirst(List<AddBean.DataBean.ListBean> list) { //这里判断 如果集合的字符大于0 你就默认显示一个商家 if (list.size() > 0) { list.get(0).setIsFirst(1); //这是默认显示商家 for (int i = 1; i < list.size(); i++) { //这是For循环把集合里的所有元素循出来 if (list.get(i).getSellerid() == list.get(i - 1).getSellerid()) { //如果俩个商品是同一个商家的那么就让这两个商品只显示一个商家 list.get(i).setIsFirst(2); } else { //如果不是 就两个都显示 list.get(i).setIsFirst(1); if (list.get(i).isItemSelected()) { list.get(i).setShopSelected(list.get(i).isItemSelected()); } } } } } /** * 加载布局文件 */ @Override public ShopAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = View.inflate(context, R.layout.adapter_layout, null); //添加到ViewHolder里 return new ViewHolder(view); } @Override public void onBindViewHolder(final ShopAdapter.ViewHolder holder, final int position) { // 显示商品图片 if (list.get(position).getIsFirst() == 1) { //显示商家 VISIBLE显示商品 holder.shop_checkbox.setVisibility(View.VISIBLE);//显示商家 holder.tv_item_shopcart_shopname.setVisibility(View.VISIBLE);//显示商家 holder.shop_checkbox.setChecked(list.get(position).isShopSelected());

// 显示商家的名称 // list.get(position).getSellerid() 取到商家的id // map.get()取到 商家的名称 holder.tv_item_shopcart_shopname.setText(map.get(String.valueOf(list.get(position).getSellerid()))); } else { holder.shop_checkbox.setVisibility(View.GONE);//隐藏商家 holder.tv_item_shopcart_shopname.setVisibility(View.GONE);//隐藏商家 } //控制 商品的 checkbox holder.item_checkbox.setChecked(list.get(position).isItemSelected()); //这是分割 由于接口中的图片是连这的所以必须要分割 String[] url = list.get(position).getImages().split("\|"); // 从分割完之后返回的数组中设置所要显示的图片 // ImageLoader.getInstance().displayImage(url[0], holder.item_pic); Uri uri = Uri.parse(url[0]); DraweeController controller = Fresco.newDraweeControllerBuilder() .setUri(uri) .setAutoPlayAnimations(true) .build(); holder.item_pic.setController(controller); //设置所要显示的文字 也是商家 holder.item_name.setText(list.get(position).getTitle()); //设置所要显示的价格 holder.item_price.setText(list.get(position).getPrice() + “”); //计算完所友的商品总价后在这设置显示 holder.plus_view_id.setEditText(list.get(position).getNum()); // 商家的checkbox 多选框 holder.shop_checkbox.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { list.get(position).setShopSelected(holder.shop_checkbox.isChecked()); for (int i = 0; i < list.size(); i++) { if (list.get(position).getSellerid() == list.get(i).getSellerid()) { list.get(i).setItemSelected(holder.shop_checkbox.isChecked()); } } notifyDataSetChanged();//更新数据源 sum(list);//计算总价 } }); // 商品的checkbox 多选框 holder.item_checkbox.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { list.get(position).setItemSelected(holder.item_checkbox.isChecked()); for (int i = 0; i < list.size(); i++) { for (int j = 0; j < list.size(); j++) { if (list.get(i).getSellerid() == list.get(j).getSellerid() && !list.get(j).isItemSelected()) { list.get(i).setShopSelected(false); break; } else { list.get(i).setShopSelected(true); } } } notifyDataSetChanged();//更新数据源 sum(list);//计算总价 } }); //删除的点击事件 holder.item_del.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //从集合中移除商家信息 list.remove(position); setFirst(list); notifyDataSetChanged();//更新数据 sum(list);//算总价 } }); //加减号 holder.plus_view_id.setListener(new plusview.ClickListener() { @Override public void click(int count) { list.get(position).setNum(count); notifyDataSetChanged();//更新适配器 sum(list);//计算总价 } }); } @Override public int getItemCount() { return list == null ? 0 : list.size();//三元运算符 } /** * 计算总价 * * @param list */ private void sum(List<AddBean.DataBean.ListBean> list) { int totalNum = 0; float totalMoney = 0.0f; boolean allCheck = true; for (int i = 0; i < list.size(); i++) { if (list.get(i).isItemSelected()) { totalNum += list.get(i).getNum(); totalMoney += list.get(i).getNum() * list.get(i).getPrice(); } else { allCheck = false; } } listener.setTotal(totalMoney + “”, totalNum + “”, allCheck); } public void selectAll(boolean cl) { for (int i = 0; i < list.size(); i++) { list.get(i).setShopSelected(cl); list.get(i).setItemSelected(cl); } notifyDataSetChanged(); sum(list); } public class ViewHolder extends RecyclerView.ViewHolder { View view; //item_del; plusview plus_view_id; CheckBox shop_checkbox, item_checkbox; TextView tv_item_shopcart_shopname, item_price, item_name, tv_item_shopcart_cloth_size; SimpleDraweeView item_pic; Button item_del; public ViewHolder(View itemView) { super(itemView); view = itemView.findViewById(R.id.view); item_del = itemView.findViewById(R.id.item_del); shop_checkbox = itemView.findViewById(R.id.shop_checkbox); item_checkbox = itemView.findViewById(R.id.item_checkbox); tv_item_shopcart_shopname = itemView.findViewById(R.id.tv_item_shopcart_shopname); item_price = itemView.findViewById(R.id.item_price); item_name = itemView.findViewById(R.id.item_name); tv_item_shopcart_cloth_size = itemView.findViewById(R.id.tv_item_shopcart_cloth_size); item_pic = itemView.findViewById(R.id.item_pic); plus_view_id = itemView.findViewById(R.id.plus_view_id); } } public UpdateUiListener listener; public void setListener(UpdateUiListener listener) { this.listener = listener; } //更新接口数据 public interface UpdateUiListener { public void setTotal(String total, String num, boolean allCheck); } }

ShopFragment package com.bwie.jd.view.fragment;

import android.os.Bundle; 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.Button; import android.widget.CheckBox; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast;

import com.bwie.jd.R; import com.bwie.jd.model.bean.AddBean; import com.bwie.jd.presenter.GouPresenter; import com.bwie.jd.view.IView.IGouView; import com.bwie.jd.view.activity.MainActivity; import com.bwie.jd.view.adapter.ShopAdapter;

import butterknife.BindView; import butterknife.ButterKnife; import butterknife.Unbinder;

public class ShopFragment extends Fragment implements IGouView { @BindView(R.id.third_recyclerview) RecyclerView thirdRecyclerview; @BindView(R.id.third_allselect) CheckBox thirdAllselect; @BindView(R.id.third_totalprice) TextView thirdTotalprice; @BindView(R.id.third_totalnum) TextView thirdTotalnum; @BindView(R.id.third_submit) Button thirdSubmit; @BindView(R.id.third_pay_linear) LinearLayout thirdPayLinear; Unbinder unbinder; private GouPresenter presenter; private ShopAdapter adapter;

@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_shop, container, false); unbinder = ButterKnife.bind(this, view); //调用P层 presenter = new GouPresenter(this); presenter.ShowPer(); return view; } @Override public void onsuccer(AddBean bean) { //线性布局 LinearLayoutManager manager = new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false); thirdRecyclerview.setLayoutManager(manager); //绑定适配器 adapter = new ShopAdapter(getActivity()); thirdRecyclerview.setAdapter(adapter); thirdAllselect.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { adapter.selectAll(thirdAllselect.isChecked()); } }); adapter.setListener(new ShopAdapter.UpdateUiListener() { @Override public void setTotal(String total, String num, boolean allCheck) { thirdAllselect.setChecked(allCheck); thirdTotalnum.setText(num); thirdTotalprice.setText(total); } }); adapter.add(bean); } @Override public void onDestroyView() { super.onDestroyView(); unbinder.unbind(); presenter.detach(); }

} Fragment布局

<?xml version="1.0" encoding="utf-8"?>

<View android:id="@+id/view" android:layout_width="match_parent" android:layout_height="@dimen/margin_10dp" android:background="@color/background_color" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical"> <!-- 商店checkbox --> <CheckBox android:id="@+id/shop_checkbox" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingBottom="@dimen/margin_10dp" android:paddingLeft="@dimen/margin_15dp" android:paddingRight="@dimen/margin_15dp" android:paddingTop="@dimen/margin_10dp" /> <!-- 商店名称 --> <TextView android:id="@+id/tv_item_shopcart_shopname" android:layout_width="match_parent" android:layout_height="wrap_content" android:drawablePadding="@dimen/padding_5dp" android:padding="@dimen/padding_10dp" android:text="宝儿家服装" android:textColor="@color/cblack" /> </LinearLayout> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <View android:layout_width="match_parent" android:layout_height="@dimen/margin_1dp" android:background="@color/background_color" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical" android:orientation="horizontal"> <!-- 商品 checkbox --> <CheckBox android:id="@+id/item_checkbox" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="@dimen/margin_15dp" /> <!-- 商品图片 --> <com.facebook.drawee.view.SimpleDraweeView android:id="@+id/item_pic" android:layout_width="60dp" android:layout_height="60dp" android:layout_margin="@dimen/margin_10dp" /> <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:orientation="vertical"> <TextView android:id="@+id/item_price" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="¥185" android:textColor="@color/main_red_text" android:textSize="@dimen/common_font_size_14" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="@dimen/margin_5dp" android:layout_marginTop="@dimen/margin_5dp"> <TextView android:id="@+id/item_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="颜色:黑色" android:textColor="@color/cblack" android:textSize="@dimen/common_font_size_12" /> <TextView android:id="@+id/tv_item_shopcart_cloth_size" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="@dimen/margin_10dp" android:text="尺寸:XL" android:textColor="@color/cblack" android:textSize="@dimen/common_font_size_12" /> </LinearLayout> <com.bwie.jd.view.util.plusview android:id="@+id/plus_view_id" android:layout_width="100dp" android:layout_height="wrap_content"></com.bwie.jd.view.util.plusview> </LinearLayout> <View android:layout_width="@dimen/margin_1dp" android:layout_height="match_parent" android:layout_marginBottom="@dimen/padding_10dp" android:layout_marginTop="@dimen/padding_10dp" android:background="@color/splitline_color" /> <Button android:id="@+id/item_del" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="@dimen/margin_20dp" android:text="删除" android:background="#f0f0f0" /> </LinearLayout> </LinearLayout> </LinearLayout> <View android:layout_width="match_parent" android:layout_height="@dimen/margin_1dp" android:background="@color/background_color" />
转载请注明原文地址: https://www.6miu.com/read-5039129.html

最新回复(0)