public void setData(MyStoreAdapter myStoreAdapter, List<CarBean.DataBean.ListBean> list,int i){
this.myStoreAdapter = myStoreAdapter;
this.list = list;
position = i;
String num = list.get(position).getNum();
editCount.setText(num);
}
switch (v.getId()){
case R.id.rightBtn:
num++;
editCount.setText(num + "");
list.get(position).setNum(String.valueOf(num));
mCallBackListener.callBack();
myStoreAdapter.notifyItemChanged(position);
break;
case R.id.leftBtn:
if (num > 1) {
num--;
} else {
//Toast.makeText(context, "商品数量不能小于1", Toast.LENGTH_LONG).show();
}
editCount.setText(num + "");
list.get(position).setNum(String.valueOf(num));
mCallBackListener.callBack();
myStoreAdapter.notifyItemChanged(position);
break;
}
private CallBackListener mCallBackListener;
public void setOnCallBack(CallBackListener listener) {
this.mCallBackListener = listener;
}
public interface CallBackListener {
void callBack();
}
//根据我记录的状态,改变勾选
viewHolder.checkStore.setChecked(list.get(i).isCheck());
viewHolder.checkStore.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
//首先改变自己的状态
list.get(i).setCheck(isChecked);
//回调,目的是告诉activity,有人选中状态被改变
if (shopCallBackListener!=null){
shopCallBackListener.callBack();
}
}
});
viewHolder.shopbar.setData(this,list,i);
viewHolder.shopbar.setOnCallBack(new ShopBar.CallBackListener() {
@Override
public void callBack() {
if(shopCallBackListener!=null){
shopCallBackListener.callBack();
}
}
});
//子商品全选反选
public void selectOrRemoveAll(boolean isSelectAll){
for (CarBean.DataBean.ListBean listBean : list){
listBean.setCheck(isSelectAll);
}
notifyDataSetChanged();
}
public void setListener(ShopCallBackListener shopCallBackListener){
this.shopCallBackListener = shopCallBackListener;
}
public interface ShopCallBackListener {
void callBack();
}
viewHolder.checkBoxShop.setChecked(this.mlist.get(i).isCheck());
myStoreAdapter.setListener(new MyStoreAdapter.ShopCallBackListener() {
@Override
public void callBack() {
//从商品适配里回调回来,回给activity,activity计算价格和数量
if (mshopCallBackListener!=null){
mshopCallBackListener.callBack(mlist);
}
List<CarBean.DataBean.ListBean> listBeans = mlist.get(i).getList();
//创建一个临时的标志位,用来记录现在点击的状态
boolean isAllChecked = true;
for (CarBean.DataBean.ListBean bean :listBeans){
if (!bean.isCheck()){
//只要有一个商品未选中,标志位设置成false,并且跳出循环
isAllChecked = false;
break;
}
}
//刷新商家的状态
viewHolder.checkBoxShop.setChecked(isAllChecked);
mlist.get(i).setCheck(isAllChecked);
}
});
//监听checkBox的点击事件
//目的是改变旗下所有商品的选中状态
viewHolder.checkBoxShop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mlist.get(i).setCheck(viewHolder.checkBoxShop.isChecked());
//调用产品adapter的方法,用来全选和反选
myStoreAdapter.selectOrRemoveAll(viewHolder.checkBoxShop.isChecked());
}
});
public void setList(List<CarBean.DataBean> list){
this.mlist = list;
notifyDataSetChanged();
}
public void setLintener(ShopCallBackListener mshopCallBackListener){
this.mshopCallBackListener = mshopCallBackListener;
}
public interface ShopCallBackListener{
void callBack(List<CarBean.DataBean> list);
}
mList = carBean.getData();
if (mList != null) {
mList.remove(0);
myCartAdapter.setList(mList);
}
myCartAdapter.setLintener(new MyCartAdapter.ShopCallBackListener() {
@Override
public void callBack(List<CarBean.DataBean> list) {
//在这里重新遍历已经改状态后的数据,
// 这里不能break跳出,因为还需要计算后面点击商品的价格和数目,所以必须跑完整个循环
double totalprice = 0;
//勾选商品的数量,不是该商品购买的数量
int num = 0;
//所有商品总数,和上面的数量做比对,如果两者相等,则说明全选
int totalNum = 0;
for (int a = 0;a<list.size();a++){
//获取商家里的商品
List<CarBean.DataBean.ListBean> listAll = list.get(a).getList();
for (int i = 0;i<listAll.size();i++){
totalNum = totalNum + Integer.valueOf(listAll.get(i).getNum());
if (listAll.get(i).isCheck()){
totalprice = totalprice + (Integer.valueOf(listAll.get(i).getNum())*Double.valueOf(listAll.get(i).getPrice())) ;
num = num +Integer.valueOf(listAll.get(i).getNum());
}
}
}
if (num<totalNum){
//不是全部选中
checkAll.setChecked(false);
}else{
checkAll.setChecked(true);
}
textTotal.setText("合计:"+totalprice);
btnJie.setText("去结算:"+num);
}
});
}
checkAll.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
checkSeller(checkAll.isChecked());
myCartAdapter.notifyDataSetChanged();
}
});
}
/**
* 修改选中状态,获取价格和数量
*/
private void checkSeller(boolean bool){
double totalprice = 0;
int num = 0;
for (int a = 0;a<mList.size();a++){
//遍历商家,改变状态
CarBean.DataBean dataBean = mList.get(a);
dataBean.setCheck(bool);
List<CarBean.DataBean.ListBean> listAll = mList.get(a).getList();
for (int i = 0;i<listAll.size();i++){
listAll.get(i).setCheck(bool);
totalprice = totalprice + (Integer.valueOf(listAll.get(i).getNum())*Double.valueOf(listAll.get(i).getPrice())) ;
num = num + Integer.valueOf(listAll.get(i).getNum());
}
}
if (bool) {
textTotal.setText("合计:" + totalprice);
btnJie.setText("去结算(" + num + ")");
} else {
textTotal.setText("合计:0.00");
btnJie.setText("去结算(0)");
}
}