首页 > 解决方案 > 在复选框状态更改时从回收器视图适配器更新 sqlite 数据库

问题描述

我想在回收站视图中的复选框状态更改上更新我的 SQLite 数据库。所有数据都列在回收站视图中。当我单击复选框时,我想调用数据库函数来更新数据库

public class OverTimeAdapter extends RecyclerView.Adapter<OverTimeAdapter.MyViewHolder> {
    private Context context;
    private ArrayList otId,otDate,otShift,paymentStatus;
    private DatabaseHelper attendanceDB;

    OverTimeAdapter(Context context,ArrayList otId,ArrayList otDate,ArrayList otShift ,ArrayList paymentStatus){
        this.context =context;
        this.otId = otId;
        this.otDate = otDate;
        this.otShift=otShift;
        this.paymentStatus = paymentStatus;
    }

    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        
    }

    @Override
    public void onBindViewHolder(@NonNull final MyViewHolder holder, int position) {
      
        if (paymentStatus.get(position)=="1"){
            holder.otListPayment.setChecked(true);
        }else {
            holder.otListPayment.setChecked(false);
        }
        OtDbId =String.valueOf(otId.get(position));
        holder.otListPayment.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                boolean checked =holder.otListPayment.isChecked();
                if (checked){
                    payStatus=1;
                }else{
                    payStatus=0;
                }

                // call db update function from here
                // attendanceDB = new DatabaseHelper(this); This is error
                //attendanceDB.updateOvertime()   /*error*/
             
                
            }
        });
    }

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

    public class MyViewHolder extends RecyclerView.ViewHolder{
        public CheckBox otListPayment;

        public MyViewHolder(@NonNull View itemView) {
            super(itemView);
            otListPayment =(CheckBox) itemView.findViewById(R.id.chk_ot_list_payment);

        }
    }
}

我们如何初始化 DBHelper 对象并调用该函数?从哪里(在哪个功能内)我可以做到?

标签: androidsqlitecheckboxandroid-recyclerviewandroid-viewholder

解决方案


将回调从适配器传递到片段/活动。在片段/活动中进行数据库更改。检查这个:https ://stackoverflow.com/a/42234382/3797879


推荐阅读