···java
public class QueryCarAdapter extends RecyclerView.Adapter<QueryCarAdapter.VHolder>{
private List<QueryCar.ResultBean> mresult;
private FragmentActivity mContext;
ArrayList ischeckeds;
public QueryCarAdapter(FragmentActivity activity, List<QueryCar.ResultBean> result) {
mContext = activity;
mresult = new ArrayList<>();
ischeckeds = new ArrayList<>();
mresult.addAll(result);
//设置默认为false
for (int i = 0; i < mresult.size(); i++) {
ischeckeds.add(false);
}
}
@NonNull
@Override
public VHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = View.inflate(parent.getContext(), R.layout.layout_car_child, null);
return new VHolder(view);
}
@Override
public void onBindViewHolder(@NonNull final VHolder holder, final int position) {
holder.child_icon.setImageURI(Uri.parse(mresult.get(position).getPic()));
holder.child_money.setText(mresult.get(position).getPrice()+"");
holder.child_title.setText(mresult.get(position).getCommodityName());
holder.child_view.setNum(mresult.get(position).getCount());
holder.child_check.setChecked(ischeckeds.get(position));
//复选框选中状态变化
holder.child_check.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//是否选中
boolean isChecked = holder.child_check.isChecked();
//存入
ischeckeds.set(position,isChecked);
//获取
Method();
}
});
//当数量发生变化的时候改变数量和总价
//加减
holder.child_view.setNumListener(new CarAddAndSub.CarResultNumListener() {
@Override
public void onNum(int number) {
mresult.get(position).setCount(number);
/*Log.e("数量",""+number);
Log.e("数量","bean内的"+mresult.get(position).getCount());*/
Method();
}
});
Method();
}
private void Method() {
//获取选中条目的总价
int money=0;
for (int i = 0; i < ischeckeds.size(); i++) {
if(ischeckeds.get(i)){
money += mresult.get(i).getPrice() * mresult.get(i).getCount();
}
}
//价钱 回调
mOnCheckBoxClick.itemclick(money);
boolean ische=false;
for (int i = 0; i < ischeckeds.size(); i++) {
if(ischeckeds.get(i)){
ische=true;
}else{
ische=false;
mAllChecked.checked(ische);
return;
}
}
//选中状态 回调
mAllChecked.checked(ische);
}
//全选
public void setAllCheckedCheckBox(boolean isChecked) {
for (int i = 0; i < ischeckeds.size(); i++) {
ischeckeds.set(i,isChecked);
}
notifyDataSetChanged();
}
//条目 全选与否
public void setAllChecked(AllChecked allChecked) {
mAllChecked = allChecked;
Method();
}
@Override
public int getItemCount() {
return mresult.size();
}
class VHolder extends RecyclerView.ViewHolder{
//child_check child_icon child_title child_money child_view
TextView child_title,child_money;
SimpleDraweeView child_icon;
CheckBox child_check;
CarAddAndSub child_view;
public VHolder(View itemView) {
super(itemView);
child_title = itemView.findViewById(R.id.child_title);
child_money = itemView.findViewById(R.id.child_money);
child_icon = itemView.findViewById(R.id.child_icon);
child_check = itemView.findViewById(R.id.child_check);
child_view = itemView.findViewById(R.id.child_view);
}
}
//复选框选中状态发生变化 回调到购物车页面 更改总价
OnCheckBoxClick mOnCheckBoxClick;
public void setOnCheckBoxClick(OnCheckBoxClick onCheckBoxClick) {
mOnCheckBoxClick = onCheckBoxClick;
}
public interface OnCheckBoxClick{
void itemclick(int money);
}
AllChecked mAllChecked;
public interface AllChecked{
void checked(boolean checked);
}
}
```java
//价钱合计
queryCarAdapter.setOnCheckBoxClick(new QueryCarAdapter.OnCheckBoxClick() {
@Override
public void itemclick(int money) {
mAllmoney = money;
amount_car.setText("合计:¥" + mAllmoney);
}
});
//条目如果全部选中 全选框选中
queryCarAdapter.setAllChecked(new QueryCarAdapter.AllChecked() {
@Override
public void checked(boolean checked) {
allcheck_car.setChecked(checked);
}
});
//复选框选中状态合计
allcheck_car.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean isChecked = allcheck_car.isChecked();
queryCarAdapter.setAllCheckedCheckBox(isChecked);
}
});