在 Resume 上更新选项卡片段的包数据

Update bundle data of tabs frgament onResume

我无法解决这个问题

我有一个 activity:带有 viewPager 的 PdvActivity。 activity 获取数据列表并将此数据设置到 TabsPagerAdapter。 TabsPagerAdapter 创建 3 个选项卡片段并在它们的包中传递数据。 第一个选项卡有一个 gridView,其中包含他从捆绑包中收到的列表中的项目。 我单击一个项目并 activity 开始...当 activity 完成时我需要刷新此网格。

我做到了:

PdvActivity onResume:我读取了新数据,我在适配器中设置了数据,然后再次将适配器设置为寻呼机

Panel[] panels = DB.getPdvPanels(pdv.id, true, activity_list);
Company company = DB.getCompany(panels[0].attivita.company_id);
mAdapter = new TabsPagerAdapter(getSupportFragmentManager());
mAdapter.setPdv(pdv);
mAdapter.setActivities(panels);
mAdapter.setCompany(company);
viewPager.setAdapter(mAdapter);

在第一个选项卡 onResume 中:

@Override
public void onResume() {
    super.onResume();
    Panel[] array_panel = (Panel[])getArguments().getParcelableArray("attivita");
    gridview = (GridView)rootView.findViewById(R.id.gridView);
    gridview.setAdapter(new AttivitaPdvAdapter(getActivity(), array_panel));
    gridview.invalidateViews();
}

PdvActivity 获取新数据,但网格使用捆绑包中的旧数据自行刷新。没有任何变化。

我错过了什么?

感谢指教

我找不到更新包的方法。 所以我以一种我认为是解决方法的方式更改了我的代码。

我没有在主 activity 中刷新数据,而是将该部分移到了片段中。 现在在捆绑包中,我只传递执行查询所需的参数,并在片段内实例化数据库以执行查询。

@Override
public void onResume() {
    super.onResume();
    Panel[] array_panel =   (Panel[])getArguments().getParcelableArray("attivita");
    gridview = (GridView)rootView.findViewById(R.id.gridView);
    gridview.setAdapter(new AttivitaPdvAdapter(getActivity(), array_panel));
    gridview.invalidateViews();
}

到那个:

@Override
public void onResume() {
    super.onResume();
    ArrayList<Attivita> activity_list = (ArrayList<Attivita>)getArguments().get("attivita");
    panels = DB.getPdvPanels(pdv.id, true, activity_list);
    gridview = (GridView)rootView.findViewById(R.id.gridView);
    gridview.setAdapter(new AttivitaPdvAdapter(getActivity(), panels));
    gridview.invalidateViews();
}

不知道有没有好的办法,或者有没有更好的办法。 但它有效,对我来说似乎还可以。

希望对您有所帮助。