购物车逻辑

购物车逻辑
接口回调传id
public getByid getByid;

public void setGetByid(MovieAdapter.getByid getByid) {
    this.getByid = getByid;
}

public interface getByid{
    void getchunid(int id);
}
activity
package com.example.zuiholiancart.activity;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.TextView;

import com.example.zuiholiancart.R;
import com.example.zuiholiancart.adapter.CartAdapter;
import com.example.zuiholiancart.bean.CartBean;
import com.example.zuiholiancart.contains.CartUlCallBack;
import com.example.zuiholiancart.contains.ShowContains;
import com.example.zuiholiancart.net.RequestUtily;
import com.example.zuiholiancart.presenter.ShowPresenter;
import com.example.zuiholiancart.view.MyView;

import java.util.HashMap;
import java.util.List;

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

public class MainActivity extends AppCompatActivity implements ShowContains.ShowView,MyView.getNumcallback,CartUlCallBack {

private Unbinder bind;
@BindView(R.id.rv)
RecyclerView rv;
@BindView(R.id.checkBox)
CheckBox checkBox;
@BindView(R.id.zong)
TextView zong;
private int uid=51;
private ShowPresenter showPresenter;
private CartAdapter cartAdapter;
private List<CartBean.DataBean> data;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    bind = ButterKnife.bind(this);
    showPresenter = new ShowPresenter(this);
    HashMap<String,String> params=new HashMap<>();
    params.put("uid",uid+"");
    showPresenter.CartPresenter(params);
    cartAdapter = new CartAdapter(this,this);
    rv.setLayoutManager(new LinearLayoutManager(this));
    rv.setAdapter(cartAdapter);
    //全选反选
    checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if (isChecked){
                for (CartBean.DataBean datum : data) {
                    datum.checkBox=true;
                    for (CartBean.DataBean.ListBean listBean : datum.list) {
                        listBean.checkBox=true;
                    }
                }
            }else {
                for (CartBean.DataBean datum : data) {
                    datum.checkBox=false;
                    for (CartBean.DataBean.ListBean listBean : datum.list) {
                        listBean.checkBox=false;
                    }
                }
            }
            cartAdapter.notifyDataSetChanged();
            Totprice();
        }
    });
}

@Override
public void onSuccessCart(CartBean cartBean) {
    data = cartBean.data;
    if (cartBean!=null){
        cartAdapter.setCarlist(cartBean.data);
    }
}

@Override
public void onFaliUre(String msg) {

}

public void Totprice(){
    double totprice=0;
    for (CartBean.DataBean datum : data) {
        for (CartBean.DataBean.ListBean listBean : datum.list) {
            if (listBean.checkBox){
                totprice+=listBean.price*listBean.productNum;
            }
        }
    }
    zong.setText("¥:"+totprice);
}
@Override
public void getNum(int nums) {
    Totprice();
}
@Override
public void notifyCall() {
    Totprice();
}
@Override
protected void onDestroy() {
    super.onDestroy();
    if (bind!=null){
        bind.unbind();
    }
    RequestUtily.getGetrequestUtily().mingcuen();
    showPresenter.fzncxl();
}

}
CartAdapter
package com.example.zuiholiancart.adapter;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.TextView;

import com.example.zuiholiancart.R;
import com.example.zuiholiancart.bean.CartBean;
import com.example.zuiholiancart.contains.BuFuleCallBak;
import com.example.zuiholiancart.contains.CartUlCallBack;

import java.util.ArrayList;
import java.util.List;

public class CartAdapter extends RecyclerView.Adapter<CartAdapter.ViewHodle> implements BuFuleCallBak{

private Context context;
private List<CartBean.DataBean> carlist;
private CartUlCallBack cartUlCallBack;

public CartAdapter(Context context, CartUlCallBack cartUlCallBack) {
    this.context = context;
    carlist=new ArrayList<>();
    this.cartUlCallBack = cartUlCallBack;
}

public void setCarlist(List<CartBean.DataBean> carlist) {
    this.carlist = carlist;
    notifyDataSetChanged();
}

@NonNull
@Override
public ViewHodle onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    View view=LayoutInflater.from(context).inflate(R.layout.car,parent,false);
    return new ViewHodle(view);
}

@Override
public void onBindViewHolder(@NonNull final ViewHodle holder, final int position) {
    double totprice=0;
    for (CartBean.DataBean.ListBean listBean : carlist.get(position).list) {
        totprice+=listBean.price*listBean.productNum;
    }
    for (CartBean.DataBean.ListBean listBean : carlist.get(position).list) {
        listBean.position=position;
    }
    holder.xiao.setText("小计¥:"+totprice+"元");
    holder.name.setText(carlist.get(position).sellerName);
    holder.checkBox.setChecked(carlist.get(position).checkBox);
    if (carlist.get(position).checkBox){
        holder.checkBox.setChecked(true);
    }else {
        holder.checkBox.setChecked(false);
    }
    holder.checkBox.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            carlist.get(position).checkBox=holder.checkBox.isChecked();
            for (CartBean.DataBean.ListBean listBean : carlist.get(position).list) {
                listBean.checkBox=carlist.get(position).checkBox;
            }
            notifyDataSetChanged();
            if (cartUlCallBack!=null){
                cartUlCallBack.notifyCall();
            }
        }
    });
    holder.grv.setLayoutManager(new LinearLayoutManager(context));
    holder.grv.setAdapter(new CarttimeAdapter(context,carlist.get(position).list,this));
}

@Override
public int getItemCount() {
    return carlist.size();
}

@Override
public void onZhuanTai(boolean ischeckBox, int postion) {
    carlist.get(postion).checkBox=ischeckBox;
    notifyDataSetChanged();
    if (cartUlCallBack!=null){
        cartUlCallBack.notifyCall();
    }
}

@Override
public void notifyNum() {
    if (cartUlCallBack!=null){
        cartUlCallBack.notifyCall();
    }
}


public class ViewHodle extends RecyclerView.ViewHolder{

    private CheckBox checkBox;
    private TextView name,xiao;
    private RecyclerView grv;

    public ViewHodle(View itemView) {
        super(itemView);
        checkBox=itemView.findViewById(R.id.checkBox);
        xiao=itemView.findViewById(R.id.xiao);
        name=itemView.findViewById(R.id.name);
        grv=itemView.findViewById(R.id.grv);
    }
}

}
CarttimeAdapter
package com.example.zuiholiancart.adapter;

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

import com.example.zuiholiancart.R;
import com.example.zuiholiancart.bean.CartBean;
import com.example.zuiholiancart.contains.BuFuleCallBak;
import com.example.zuiholiancart.view.MyView;
import com.facebook.drawee.backends.pipeline.Fresco;
import com.facebook.drawee.controller.AbstractDraweeController;
import com.facebook.drawee.view.SimpleDraweeView;

import java.util.List;

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

private Context context;
private List<CartBean.DataBean.ListBean> list;
private BuFuleCallBak buFuleCallBak;

public CarttimeAdapter(Context context, List<CartBean.DataBean.ListBean> list, BuFuleCallBak buFuleCallBak) {
    this.context = context;
    this.list = list;
    this.buFuleCallBak = buFuleCallBak;
}

@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    View view=LayoutInflater.from(context).inflate(R.layout.car_time,parent,false);
    return new ViewHolder(view);
}

@Override
public void onBindViewHolder(@NonNull final ViewHolder holder, final int position) {
    Uri uri=Uri.parse(list.get(position).images);
    AbstractDraweeController build = Fresco.newDraweeControllerBuilder()
            .setUri(uri)
            .setAutoPlayAnimations(true)
            .build();
    holder.img.setController(build);
    holder.title.setText(list.get(position).title);
    holder.price.setText("¥:"+list.get(position).price);
    holder.checkBox.setChecked(list.get(position).checkBox);
    holder.myview.SteNum(list.get(position).productNum);
    holder.checkBox.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            list.get(position).checkBox=holder.checkBox.isChecked();
            for (CartBean.DataBean.ListBean listBean : list) {
                if (!listBean.checkBox){
                    if (buFuleCallBak!=null){
                        buFuleCallBak.onZhuanTai(false,listBean.position);
                    }
                    return;
                }else {
                    if (buFuleCallBak!=null){
                        buFuleCallBak.onZhuanTai(true,listBean.position);
                    }
                }
            }
        }
    });
    holder.myview.setGetNumcallback(new MyView.getNumcallback() {
        @Override
        public void getNum(int nums) {
            list.get(position).productNum=nums;
            if (buFuleCallBak!=null){
                buFuleCallBak.notifyNum();
            }
        }
    });
}

@Override
public int getItemCount() {
    return list.size();
}

public class ViewHolder extends RecyclerView.ViewHolder{

    private CheckBox checkBox;
    private SimpleDraweeView img;
    private TextView title,price;
    private MyView myview;

    public ViewHolder(View itemView) {
        super(itemView);
        checkBox=itemView.findViewById(R.id.checkBox);
        img=itemView.findViewById(R.id.img);
        title=itemView.findViewById(R.id.title);
        price=itemView.findViewById(R.id.price);
        myview=itemView.findViewById(R.id.myview);
    }
}

}
自定义加减器
package com.example.zuiholiancart.view;

import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

import com.example.zuiholiancart.R;

public class MyView extends LinearLayout {

private TextView jia;
private TextView jian;
private EditText num;
private int nums=1;

public MyView(Context context) {
    this(context,null);
}

public MyView(Context context,  AttributeSet attrs) {
    this(context, attrs,0);
}

public MyView(Context context,  AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
    init(context);
}

private void init(Context context) {
    View view=LayoutInflater.from(context).inflate(R.layout.zdyview,this);
    jia = view.findViewById(R.id.jia);
    jian = view.findViewById(R.id.jian);
    num = view.findViewById(R.id.num);
    jian.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            nums=Integer.parseInt(num.getText().toString());
            nums--;
            if (nums==0){
                nums=1;
                Toast.makeText(getContext(),"不能小于1",Toast.LENGTH_SHORT).show();
            }
            num.setText(nums+"");
            if (getNumcallback!=null){
                getNumcallback.getNum(nums);
            }
        }
    });
    jia.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            nums=Integer.parseInt(num.getText().toString());
            nums++;
            num.setText(nums+"");
            if (getNumcallback!=null){
                getNumcallback.getNum(nums);
            }
        }
    });

}
public void SteNum(int nums){
    num.setText(nums+"");
}

public getNumcallback getNumcallback;

public void setGetNumcallback(MyView.getNumcallback getNumcallback) {
    this.getNumcallback = getNumcallback;
}

public interface getNumcallback{
    void getNum(int nums);
}

}
APP
package com.example.zuiholiancart;

import android.app.Application;
import android.os.Environment;

import com.facebook.cache.disk.DiskCacheConfig;
import com.facebook.common.util.ByteConstants;
import com.facebook.drawee.backends.pipeline.Fresco;
import com.facebook.imagepipeline.core.ImagePipelineConfig;

public class APP extends Application {
@Override
public void onCreate() {
super.onCreate();
DiskCacheConfig build = DiskCacheConfig.newBuilder(this)
.setBaseDirectoryName(“monilian_img”)
.setBaseDirectoryPath(Environment.getExternalStorageDirectory())
.setMaxCacheSize(100*ByteConstants.MB)
.build();
ImagePipelineConfig build1 = ImagePipelineConfig.newBuilder(this)
.setMainDiskCacheConfig(build)
.build();
Fresco.initialize(this,build1);
}
}
接口
public interface BuFuleCallBak {
void onZhuanTai(boolean ischeckBox,int postion);
void notifyNum();
}
接口
public interface CartUlCallBack {
void notifyCall();
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值