如何刷新片段中的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 上的片段?