万能适配器实现购物车功能
布局可自己实现
1.适配器+子布局添加点击事件
package com.example.day09_shopcar;
import android.support.annotation.Nullable;
import android.widget.ImageView;
import com.bumptech.glide.Glide;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import java.util.List;
public class MyAdapter extends BaseQuickAdapter<Food.DataBean, BaseViewHolder> {
public MyAdapter(int layoutResId, @Nullable List<Food.DataBean> data) {
super(layoutResId, data);
}
@Override
protected void convert(BaseViewHolder helper, Food.DataBean item) {
helper.setText(R.id.title_,item.getTitle());
helper.setText(R.id.price,item.getNum()+"");
helper.setText(R.id.num_,item.getChecknum()+"");
helper.setChecked(R.id.checkbox1,item.getChecked());
Glide.with(mContext).load(item.getPic()).into((ImageView)helper.getView(R.id.img_));
helper.addOnClickListener(R.id.jia_num)
.addOnClickListener(R.id.jian_num)
.addOnClickListener(R.id.checkbox1)
.addOnClickListener(R.id.del_);
}
}
2.MainActivity显示+点击事件实现功能
- 商品实体类里必须要有一个boolean值 获取是否选择 还有一个int值 保存商品个数
private Boolean checked = false;
private int checknum = 0;
- 加减 删除 选择
myAdapter = new MyAdapter(R.layout.shopcar_layout,list);
rv.setAdapter(myAdapter);
rv.setLayoutManager(new LinearLayoutManager(this));
initData();
myAdapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() {
@Override
public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) {
switch (view.getId()){
//增加个数
case R.id.jia_num:
int checknum = list.get(position).getChecknum();
checknum ++;
list.get(position).setChecknum(checknum);
myAdapter.notifyDataSetChanged();
count();
break;
//减少个数
case R.id.jian_num:
int checknum1 = list.get(position).getChecknum();
if (checknum1 > 0) {
checknum1 --;
}
list.get(position).setChecknum(checknum1);
myAdapter.notifyDataSetChanged();
count();
break;
//点击删除
case R.id.del_:
list.remove(position);
myAdapter.notifyDataSetChanged();
count();
break;
//单个选择
case R.id.checkbox1:
CheckBox checkBox = (CheckBox) view;
list.get(position).setChecked(checkBox.isChecked());
myAdapter.notifyDataSetChanged();
count();
break;
}
}
});
//全选+取消全选
zongCh.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
for (int i = 0; i < list.size(); i++) {
list.get(i).setChecked(isChecked);
}
myAdapter.notifyDataSetChanged();
count();
}
});
计算总价
public void count(){
int count = 0;
for (int i = 0; i < list.size(); i++) {
Boolean c = list.get(i).getChecked();
if (c) {
int price = list.get(i).getNum();
int checknum = list.get(i).getChecknum();
count += price*checknum;
}
}
allMoney.setText(count+"");
}