购物车页面

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" />
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值