在复选框状态更改时从回收器视图适配器更新 sqlite 数据库
Posted
技术标签:
【中文标题】在复选框状态更改时从回收器视图适配器更新 sqlite 数据库【英文标题】:Update sqlite database from recycler view adapter on checkbox state change 【发布时间】:2021-03-12 10:59:15 【问题描述】:我想在回收站视图中的复选框状态更改时更新我的 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 对象并调用函数?从哪里(在哪个函数内)我可以做到?
【问题讨论】:
【参考方案1】:将回调从适配器传递到片段/活动。在片段/活动中进行数据库更改。 检查这个:https://***.com/a/42234382/3797879
【讨论】:
以上是关于在复选框状态更改时从回收器视图适配器更新 sqlite 数据库的主要内容,如果未能解决你的问题,请参考以下文章