在 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();
}
不知道有没有好的办法,或者有没有更好的办法。
但它有效,对我来说似乎还可以。
希望对您有所帮助。
我无法解决这个问题
我有一个 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();
}
不知道有没有好的办法,或者有没有更好的办法。 但它有效,对我来说似乎还可以。
希望对您有所帮助。