首页 > 解决方案 > 如何更新主从流活动的 listFragment

问题描述

我正在使用 Master Detail Flow Activity 并且我有一个ListFragmentand DetailFragment,我有一个由我帮助Fragments的实例来对我的.SQLiteHelperSQLite

我的问题是关于我的DetailFragment我有一个Button可以删除一个项目(我有我的产品的 id,所以我可以简单地删除它),但我的问题是,Master detail flow当我从我的产品中删除时,DetailFragment我必须做一些事情喜欢adapter.notifyDataSetChanged()或类似的东西,但我的适配器和我的所有东西,我RecyclerView如何从我DetailFragment的到Adapter我的参考ListFragment

注意:在我MainActivity的身上,除了创造Fragment

我的问题是:

  1. 在我的身上,除了创建, 以及我的实现被调用来替换 current之外,MainActivity我什么都没有,可以吗?FragmentMainActivityInterfaceAdapterFragment
  2. 在两个Fragments 上我都有一个newInstance()my SQLiteHelper,我可以把它放在 my 上Activity,这样我就可以使用同一个对象了吗?
  3. 问题是我需要RecyclerView从我的更新DetailFragment和我没有任何关于它的东西RecyclerView,所以我不能做类似adapter.notifyDataSetChanged()或类似的事情,我只能删除当前项目,我如何连接我DetailFragment来刷新RecyclerView

标签: javaandroid

解决方案


在我的 MainActivity 上,除了创建 Fragment 之外,我什么都没有,我的 MainActivity 实现了一个从 Adapter 调用的接口来替换当前的 Fragment,可以吗?

当然可以,但是您至少还希望保留对主片段的引用,以将删除操作委托给它以响应详细片段中的操作。

在两个片段上,我都有一个 SQLiteHelper 的 newInstance(),我可以把它放在我的 Activity 上,这样我就可以使用同一个对象了吗?

当然。通常你有 SQLite 访问对象是某种单例。通过一个 Activity 访问它是一种方法。

问题是我需要从我的 DetailFragment 更新 RecyclerView 并且在它上面我没有任何关于 RecyclerView 的东西,所以我不能做类似 adapter.notifyDataSetChanged() 或类似的事情,我只能删除当前项目,如何我可以连接我的 DetailFragment 以刷新 RecyclerView 吗?

请查看有关与其他片段通信的官方文档。

您可以通过使用正在删除的项目的索引或 ID 调用的方法OnDeleteListener来针对您的用例调整策略。DetailFragment然后 Activity 将委托给MasterFragment让其知道该项目已被删除,以便它可以在其适配器上调用notifyItemRemoved 。

希望有帮助!


推荐阅读