//全选反选
需要在集合内外两层定义Boolean 值 默认为uFlase 点击总的时候判断是否选中、拿取总的数据进行选中、和内层的集合进行选中
yh_check_zong.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (yh_check_zong.isChecked()){
for (int i=0;i<data.size();i++){
data.get(i).setTwo(true);
for (int j=0;j<data.get(i).getSpus().size();j++){
data.get(i).getSpus().get(j).setThree(true);
}
}
}else{
for (int i=0;i<data.size();i++){
data.get(i).setTwo(false);
for (int j=0;j<data.get(i).getSpus().size();j++){
data.get(i).getSpus().get(j).setThree(false);
}
}
}
recycleYH_adapter.notifyDataSetChanged();
CountPrice();
}
});
适配器
内外的两个适配器也要设置值
自定义加减器
继承LinearLayout 从写三个方法
new 的方法 前两个要该成this
public Zdy(Context context) {
this(context,null);
}
//xml的方法
public Zdy(Context context, AttributeSet attrs) {
this(context, attrs,0);
}
//定义的方法
public Zdy(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(context);
}
//创建一个类并、并写一个回调的方法判断是否为空
private void init(final Context context){
View view=LayoutInflater.from(context).inflate(R.layout.jiajian,this,true);
jia = findViewById(R.id.jia);
jian = findViewById(R.id.jian);
et_num = findViewById(R.id.et_num);
et_num.setText("1");
jia.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
num=Integer.parseInt(et_num.getText().toString());
num++;
et_num.setText(num+"");
//不为空的时候 调用方法并把值附上
if (onAddListenter !=null){
onAddListenter.numListenter(num);
}
// onAddListenter.numListenter(num);
}
});
jian.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
num=Integer.parseInt(et_num.getText().toString());
num--;
if (num ==0){
num=1;
Toast.makeText(context,"不能再减了",Toast.LENGTH_SHORT).show();
return;
}
et_num.setText(num+"");
if (onAddListenter!=null){
onAddListenter.numListenter(num);
}
// onAddListenter.numListenter(num);
}
});
}
private OnAddListenter onAddListenter;
public interface OnAddListenter{
void numListenter(int num);
}
public void setOnAddListenter( OnAddListenter onAddListenter){
this.onAddListenter=onAddListenter;
}
//这个方法是对加价器上的数据进行负值、并且在最里层要调用并且赋值
public void setNum(int newNub) {
if (newNub > 0) {
et_num.setText(newNub + "");
} else {
Toast.makeText(getContext(), "最小数量为0", Toast.LENGTH_SHORT).show();
}
}
计算总价
private void CountPrice(){
double SumPrice=0;
int Sums=0;
//还是调用Bean
List<ShowBean.DataBean> data = sjRecycle_adapter.getData();
for (int i = 0; i< data.size(); i++){
List<ShowBean.DataBean.ListBean> list = data.get(i).getList();
for (int j=0;j<list.size();j++){
ShowBean.DataBean.ListBean listBean = list.get(j);
if (listBean.isTwo()){
double price = listBean.getPrice();
int num = listBean.getNum();
SumPrice+=price*num;
Sums+=num;
}
}
}
sj_num.setText(Sums+"");
sj_zongjia.setText(SumPrice+"");
}