java - 如何更新主从流活动的 listFragment
问题描述
我正在使用 Master Detail Flow Activity 并且我有一个ListFragment
and DetailFragment
,我有一个由我帮助Fragments
的实例来对我的.SQLiteHelper
SQLite
我的问题是关于我的DetailFragment
我有一个Button
可以删除一个项目(我有我的产品的 id,所以我可以简单地删除它),但我的问题是,Master detail flow
当我从我的产品中删除时,DetailFragment
我必须做一些事情喜欢adapter.notifyDataSetChanged()
或类似的东西,但我的适配器和我的所有东西,我RecyclerView
如何从我DetailFragment
的到Adapter
我的参考ListFragment
?
注意:在我MainActivity
的身上,除了创造Fragment
我的问题是:
- 在我的身上,除了创建, 以及我的实现被调用来替换 current之外,
MainActivity
我什么都没有,可以吗?Fragment
MainActivity
Interface
Adapter
Fragment
- 在两个
Fragment
s 上我都有一个newInstance()
mySQLiteHelper
,我可以把它放在 my 上Activity
,这样我就可以使用同一个对象了吗? - 问题是我需要
RecyclerView
从我的更新DetailFragment
和我没有任何关于它的东西RecyclerView
,所以我不能做类似adapter.notifyDataSetChanged()
或类似的事情,我只能删除当前项目,我如何连接我DetailFragment
来刷新RecyclerView
?
解决方案
在我的 MainActivity 上,除了创建 Fragment 之外,我什么都没有,我的 MainActivity 实现了一个从 Adapter 调用的接口来替换当前的 Fragment,可以吗?
当然可以,但是您至少还希望保留对主片段的引用,以将删除操作委托给它以响应详细片段中的操作。
在两个片段上,我都有一个 SQLiteHelper 的 newInstance(),我可以把它放在我的 Activity 上,这样我就可以使用同一个对象了吗?
当然。通常你有 SQLite 访问对象是某种单例。通过一个 Activity 访问它是一种方法。
问题是我需要从我的 DetailFragment 更新 RecyclerView 并且在它上面我没有任何关于 RecyclerView 的东西,所以我不能做类似 adapter.notifyDataSetChanged() 或类似的事情,我只能删除当前项目,如何我可以连接我的 DetailFragment 以刷新 RecyclerView 吗?
请查看有关与其他片段通信的官方文档。
您可以通过使用正在删除的项目的索引或 ID 调用的方法OnDeleteListener
来针对您的用例调整策略。DetailFragment
然后 Activity 将委托给MasterFragment
让其知道该项目已被删除,以便它可以在其适配器上调用notifyItemRemoved 。
希望有帮助!
推荐阅读
- google-cloud-platform - 列出项目中可用的共享 VPC
- python-3.x - 播放 RTMP 流,并且还希望在并行运行流时更新 mp3 文件而不中断流
- typescript - 如果我的 .vue 文件都一样,我该如何避免重复?
- c++ - 在这个“简单”初始化中 i 的值是多少?
- r - 使用 R 抓取网页搜索结果
- javascript - 如何从该数组中分离规则数组并执行函数
- c++ - 将 Bazel 与本地升压安装一起使用
- c++ - 了解C++11以来std::forward的实现
- ajax - ASP.NET Core ajax 和 Async C# 方法
- c# - 如何查找支持的 Direct3D 功能级别