Android 如何在onResume()上更新RecyclerView中的值?

Android 如何在onResume()上更新RecyclerView中的值?,android,Android,我正在设计一个新闻应用程序,在这个应用程序中,我将在一个recyclerView中显示新闻文章。现在点击一篇新闻文章,我想改变它的背景颜色,以表明该新闻项目已被阅读 为此,我首先在读取新闻时更新Firebase数据库中与新闻文章对应的状态字段。然后在我的回收器适配器中检查此字段的值,如果状态更改,则更改背景 但是,由于recyclerView的适配器是在片段的onCreateView中定义的,所以当我按下back按钮时,更改不会立即发生。而是在重新打开应用程序时发生更改,因为此时调用了onCre

我正在设计一个新闻应用程序,在这个应用程序中,我将在一个recyclerView中显示新闻文章。现在点击一篇新闻文章,我想改变它的背景颜色,以表明该新闻项目已被阅读

为此,我首先在读取新闻时更新Firebase数据库中与新闻文章对应的状态字段。然后在我的回收器适配器中检查此字段的值,如果状态更改,则更改背景


但是,由于recyclerView的适配器是在片段的onCreateView中定义的,所以当我按下back按钮时,更改不会立即发生。而是在重新打开应用程序时发生更改,因为此时调用了onCreateView。那么,如何在片段的onResume中更新适配器并相应地更新recyclerView?

覆盖
onResume
方法并调用
notifyDataSetChanged

@Override
public void onResume() {
    super.onResume();
    adapter.notifyDataSetChanged();
}
在科特林:

override fun onResume() {
    super.onResume()
    adapter.notifyDataSetChanged()
}
添加代码以更新数据并通知适配器


从oncreateview()初始化并设置适配器

然后您只需要更新适配器数据并调用adapter.notifyDataSetChanged();形成你的简历()


它可以工作,但由于再次调用适配器,因此会导致recyclerview中出现重复的值。任何解决方案?notifyDataSetChanged根据用于初始化它的listData引用刷新recyclerview。因此,当您更改状态数据时,请检查您是否正在为其创建重复条目。@Sarthak在onResume()中调用notifyDataSetChanged()之前,您必须重置列表,以避免重复。@EKN对于单个条目的更改,不必清除整个列表。必须注意的是,当需要更改单个条目时,使用position and passed dataList获取单个条目的引用并更改其状态。因此,调用notifyDataSetChanged只会反映数据列表上的更改,不会创建重复条目。@SarthakGrover是每个条目都被复制还是只有一个被更改?
 @Override
public void onResume() {
super.onResume();
/// code to update data then notify Adapter
adapter.notifyDataSetChanged();
}
@Override
  protected void onCreate(@Nullable Bundle savedInstanceState) {
  YourAdapter adapter = new YourAdapter(listofdata);
  yourRecycleView.setAdapter(adapter);
 }

@Override
public void onResume() {
super.onResume();
listofdata.clear();  //Reset before update adapter to avoid duplication of list
//update listofdata
adapter.notifyDataSetChanged();
}