java - 如何更新片段中的 recyclerview 列表?(notifyDataSetChanged 不起作用)
问题描述
我的项目中有一个片段,当您单击那里的 recyclerview 时,它会转到该项目(详细活动打开)。详细活动中有一个like按钮,当你按下它时,在上层;片段中的 recyclerview 需要更新,但我不能。
我的代码:(片段)
RecyclerView savedRecyclerView;
SQLiteHandler sqLiteHandler;
SavedAdapter savedAdapter;
List<SavedModel> itemModels = new ArrayList<>();
@SuppressLint("StaticFieldLeak")
public static SavedFragment instance;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_saved, container, false);
instance = this;
savedRecyclerView = view.findViewById(R.id.savedRecyclerView);
sqLiteHandler = new SQLiteHandler(getActivity());
itemModels = sqLiteHandler.getSaved();
LinearLayoutManager mainLayoutManager = new LinearLayoutManager(getContext(), RecyclerView.VERTICAL, false);
savedRecyclerView.setLayoutManager(mainLayoutManager);
savedAdapter = new SavedAdapter(getContext(), itemModels, "diyet");
savedRecyclerView.setAdapter(savedAdapter);
savedAdapter.notifyDataSetChanged();
return view;
}
public static SavedFragment getInstance() {
return instance;
}
public void refreshFragment() {
Log.e("TAG_FRAGMENT", "refresh");
itemModels.clear();
itemModels = sqLiteHandler.getSaved();
if (itemModels.isEmpty()) {
empty_animation.setVisibility(View.VISIBLE);
} else {
LinearLayoutManager mainLayoutManager = new LinearLayoutManager(getContext(), RecyclerView.VERTICAL, false);
savedRecyclerView.setLayoutManager(mainLayoutManager);
savedAdapter = new SavedAdapter(getContext(), itemModels, "diyet");
savedRecyclerView.setAdapter(savedAdapter);
savedAdapter.notifyDataSetChanged();
}
getFragmentManager().beginTransaction().detach(this).attach(this).commit();
getActivity().getSupportFragmentManager().beginTransaction().detach(this).attach(this).commit();
}
我试试这个但不工作
@Override
public void onResume() {
savedAdapter.notifyDataSetChanged();
super.onResume();
}
详细活动 UnFav 按钮单击
if (SavedFragment.getInstance()!=null){
SavedFragment.getInstance().refreshFragment();
Log.e("TAG_FRAGMENT","savednotnull");
}
解决方案
public void refreshFragment() {
getFragmentManager().beginTransaction().detach(this).attach(this).commit();
}
推荐阅读
- kql - Kusto 查询记录之间的时间差
- selenium - Selenium Grid 节点无法通过 VPN 注册到 HUB
- reactjs - React 突然响应 index.html 而不是 javascript 导入
- google-api-python-client - 获取所有 gmail 帐户 python 的驱动器使用情况
- python - 在熊猫 groupby 中返回第一个日期
- python - 用python绘制内存图像视图
- javascript - express.json() is an unknown property
- android - 检查 Android 应用程序是否在 Google 测试设备上运行?
- python - CFD python 代码的并行化、多线程和多处理、CPU 限制、笔记本电脑崩溃
- armclang - __attribute__ 部分名称更改为特定地址