如何刷新片段中的onBindViewHolder方法

Posted

技术标签:

【中文标题】如何刷新片段中的onBindViewHolder方法【英文标题】:how to refresh onBindViewHolder method in fragment 【发布时间】:2021-05-30 16:36:57 【问题描述】:

我在recyclearview的每个项目中都有复选框,所以我想保存复选框的状态,所以我在[适配器类] onbindviewholder方法中为复选框创建点击列表,用于在mysqlite数据库中存储复选框的状态,然后我正在检索这些值并保存到复选框状态

-问题是 checkbox_state 仅在我重新打开我的应用程序时才会刷新

@Override
public void onBindViewHolder(@NonNull myviewholder holder, int position) 

checkBox.setOnClickListener(
   new View.OnClickListener() 
    @Override
    public void onClick(View v) 

     if (checkBox.isChecked() == true)
     database db1 = new database(context);
     db1.update_data_ck( String.valueOf(id.get(getAdapterPosition()) ), "true");
      
     else 
     database db1 = new database(context);
     db1.update_data_ck( String.valueOf(id.get(getAdapterPosition()) ),"false");
     
  );
              

//这里的id是arraylist

【问题讨论】:

【参考方案1】:

我看不到您更新复选框状态的代码,对于每个视图,您必须从数据库中读取复选框的状态并在 bindviewholder 中设置,

喜欢: checkBox.setChecked(readCheckBoxStateFromDB())

【讨论】:

【参考方案2】:

如果您想在数据库中保存复选框的状态,而不是视图创建检查值并设置复选框的状态 您还可以使用共享偏好来存储状态 但现在推荐的方法是 您可以使用 Room 实时数据更新简单且推荐的方式 SQL Lite 写了太多代码来保存状态和检索状态

【讨论】:

以上是关于如何刷新片段中的onBindViewHolder方法的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式通过 Main Activity 在 ViewPager 中更新刷新片段

未调用 RecyclerVIew onCreateViewHolder 和 onBindViewHolder

当另一个片段中的数据发生更改时,如何刷新一个片段中的 RecyclerView

如何刷新其活动的 MenuitemSelected 上的片段?

当sqlite android片段中的数据更改或删除时如何刷新recyclerview?

从android eclipse中的片段刷新或更新listadapter