一级列表_ButterKnife_勾选事件的联动

博客给出了ButterKnife勾选事件联动相关代码。包含加减类JiaJian,主页类MainActivity中处理勾选事件,根据复选框状态计算总价并更新列表,还有适配器类ShowAdapter用于展示列表数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

加减

public class JiaJian extends LinearLayout {
TextView text_jia,text_jian,text_num;
int index=0;
public JiaJian(Context context) {
super(context);
}

public JiaJian(Context context, AttributeSet attrs) {

    super(context, attrs);
    View view = LayoutInflater.from(context).inflate(R.layout.jiajian_layout,this);
    text_jia = view.findViewById(R.id.text_jia);
    text_jian = view.findViewById(R.id.text_jian);
    text_num= view.findViewById(R.id.text_num);
    text_jia.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            index++;
            text_num.setText(index+"");
            myCallBack.chuanzhi(index);

        }
    });
  text_jian.setOnClickListener(new OnClickListener() {
      @Override
      public void onClick(View v) {


          if(index>1){
              index--;
              text_num.setText(index+"");
              myCallBack.chuanzhi(index);
          }
      }
  });
}

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

public void text_index(int index){
    this.index = index;
    text_num.setText(index+"");
}
MyCallBack myCallBack;
public interface MyCallBack{
    public void chuanzhi(int index);
}

public void setMyCallBack(MyCallBack myCallBack) {
    this.myCallBack = myCallBack;
}

}

主页

public class MainActivity extends AppCompatActivity implements ConteatInterface.ActivityFace {

List<GoodsBean.Goods> list = new ArrayList<>();
ConteatInterface.PresenterFace presenterFace;
@BindView(R.id.recycler_view)
XRecyclerView recyclerView;
@BindView(R.id.checkbox_1)
CheckBox checkbox1;
@BindView(R.id.text_zong)
TextView textZong;
private ShowAdapter adapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //初始化
    ButterKnife.bind(this);

    LinearLayoutManager layoutManager = new LinearLayoutManager(this);
    layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
    recyclerView.setLayoutManager(layoutManager);

    adapter = new ShowAdapter(list, this);
    recyclerView.setAdapter(adapter);

    presenterFace = new MyPersenter<>(this);
    presenterFace.requestData();

    adapter.setMyCallBack(new ShowAdapter.MyCallBack() {
        @Override
        public void sueccuss(List<GoodsBean.Goods> mlist) {
            int sun = 0;
            int ss = 0;
            for (int i= 0;i< mlist.size();i++){
                if (mlist.get(i).isched){
                    ss++;
                    int count = list.get(i).getCount();
                    double price = list.get(i).getPrice();
                    sun+=count*price;
                }
            }
            if(mlist.size() == ss){
                checkbox1.setChecked(true);
            }else{
                checkbox1.setChecked(false);
            }
            textZong.setText("¥"+sun);
            adapter.notifyDataSetChanged();
        }
    });
}

@Override
public void showData(Object o) {
    GoodsBean goodsBean = (GoodsBean) o;
    list.addAll(goodsBean.getResult());
    adapter.notifyDataSetChanged();
}
@OnClick(R.id.checkbox_1)

public void onViewClicked(){
int sun = 0;
boolean b = checkbox1.isChecked();
if (b){
for (int i = 0;i<list.size();i++){
list.get(i).isched = b;
int count = list.get(i).getCount();
double price = list.get(i).getPrice();
sun+=count*price;
}
}else{
for (int i = 0; i <list.size() ; i++) {
list.get(i).isched =b;
}
sun = 0;
}
textZong.setText("¥ "+sun);
adapter.notifyDataSetChanged();
}

@Override
protected void onDestroy() {
    super.onDestroy();
    presenterFace = null;
}

}

适配器

public class ShowAdapter extends RecyclerView.Adapter<ShowAdapter.Holder> {
List<GoodsBean.Goods> list;
Context context;

public ShowAdapter(List<GoodsBean.Goods> list, Context context) {
    this.list = list;
    this.context = context;
}

@NonNull
@Override
public Holder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
    View view = LayoutInflater.from(context).inflate(R.layout.showadaoter_layout,null);
    return new Holder(view);
}

@Override
public void onBindViewHolder(@NonNull final Holder holder, final int i) {
    holder.checkBox_2.setChecked(list.get(i).isched);
    holder.text_name.setText(list.get(i).getCommodityName());
    holder.text_price.setText(list.get(i).getPrice()+"");
    holder.jiaJian.text_index(list.get(i).getCount());
    holder.jiaJian.setMyCallBack(new JiaJian.MyCallBack() {
        @Override
        public void chuanzhi(int index) {
            list.get(i).setCount(index);
            myCallBack.sueccuss(list);
        }
    });
    Glide.with(context).load(list.get(i).getPic()).into(holder.image_view);

    holder.checkBox_2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            boolean b = holder.checkBox_2.isChecked();
            list.get(i).isched=b;
            myCallBack.sueccuss(list);
        }
    });
}

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

public class Holder extends RecyclerView.ViewHolder{
    TextView text_name,text_price;
    ImageView image_view;
    JiaJian jiaJian;
    CheckBox checkBox_2;
    public Holder(@NonNull View itemView) {
        super(itemView);
        text_name  =itemView.findViewById(R.id.text_name);
        text_price  =itemView.findViewById(R.id.text_price);
        image_view  =itemView.findViewById(R.id.image_view);
        jiaJian  =itemView.findViewById(R.id.jiajian);
        checkBox_2  =itemView.findViewById(R.id.checkbox_2);
    }
}
MyCallBack myCallBack;

public void setMyCallBack(MyCallBack myCallBack) {
    this.myCallBack = myCallBack;
}

public interface MyCallBack{
    public void sueccuss(List<GoodsBean.Goods> list);
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值