【问题标题】:NotifyDataSetChanged on different fragmentNotifyDataSetChanged 在不同的片段上
【发布时间】:2018-05-17 16:14:26
【问题描述】:

我正在使用主/详细信息流(不是默认流),所以我有一个 fragment 包含 RecyclerView 的内容,当我单击一个项目时,我在其他 fragment 上看到该项目的详细信息,它可以工作,但是现在我想从详细信息片段中删除该项目,当我单击删除时,它会刷新,然后通知数据集已更改。

有什么问题?我的 ListFragment 和 DetailFragment 上有适配器,我只能从我的 SQLite 中删除该项目,我想刷新列表。

Activity -- 我在哪里创建 listFragment

Fragment1 -- ListFragment (RecyclerView, Adapter, Sqlite(For fetch products))

Fragment2 -- DetailFragment(Sqlite(删除项目))

活动

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity);
    if(savedInstanceState == null){
        Fragment list = new ListFragment();
        FragmentManager fragmentManager = getSupportFragmentManager();
        fragmentManager.beginTransaction().add(R.id.list,list).commit();
    }
}

在我的ListFragment 我有这些属性

private SQLiteAdapter sqliteAdapter;
private Context mContext;
private Adapter adapter;
private RecyclerView recyclerView;
private List<Product> data;

然后我使用打开 sqliteAdapter 的方法放入数据,然后获取所有产品,然后关闭连接。

在我的 DetailFragment 上,我有 SQLite 对象来获取从适配器(id 产品)发送的产品,然后显示有关该产品的信息。 现在我可以删除一个对象,但它并没有从 ListFragment 刷新,我想知道将这个 SQLite 对象放在 Activity 或两个片段中的哪个位置是可以的

【问题讨论】:

  • 请出示minimal reproducible example 来说明您的问题。特别是显示活动、片段和适配器。
  • @Code-Apprentice 我要放什么????带有删除方法的按钮???我只是在解释我的场景,不过看看我的编辑
  • 请阅读我之前提供的链接。如果没有一些实际代码,很难说出如何解决您的问题。
  • 我不需要代码,我需要推理信息'会澄清你,但从现在开始,我不知道你为什么要查看我的 ListFragment / Detail Fragment 如果在我的问题中我已经放置了包含每个片段的内容。
  • 我非常愿意帮助你。但要这样做,我需要查看您的代码。告诉我我不需要这样做就像告诉你的医生她应该能够通过告诉她你咳嗽来诊断出什么问题。

标签: java android android-fragments fragment


【解决方案1】:

听起来您只是从数据库中删除该项目。您还需要将其从适配器的列表或其他数据结构中删除。

【讨论】:

  • 但是没有办法吗?是的,我正在从我的数据库中删除它
  • @StuartDTO You also need to delete it from the adapter's list or other data structure,这意味着将ListArray 或任何其他数据结构(您放置从数据库加载的数据的位置)发送到适配器,也需要拥有最新的内容,在您的情况下删除相关记录。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-16
  • 1970-01-01
  • 1970-01-01
  • 2013-12-27
  • 1970-01-01
相关资源
最近更新 更多