我无法解决这个问题。
我有一个活动:带有viewPager的PdvActivity。 此活动获取数据列表并将此数据设置为TabsPagerAdapter。 TabsPagerAdapter创建3个选项卡片段并传递其包中的数据。 第一个选项卡有一个gridView,其中包含从包中收到的列表中的项目。 我点击一个项目和一个活动开始......当活动结束时我需要刷新这个网格。
我做了:
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获取新数据,但网格使用bundle中的旧数据刷新自身。没有任何改变。
我缺少什么?
感谢您的建议
答案 0 :(得分:0)
我找不到更新捆绑包的方法。 所以我改变了我的代码,我认为这是一种解决方法。
我没有在主要活动中刷新数据,而是将该块移动到片段中。 现在在bundle中我只传递执行查询所需的参数,并在片段内实例化数据库以进行查询。
@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();
}
我不知道是否是一个好的解决方案,或者是否有更好的方法。 但它有效,对我来说似乎没问题。
希望它会对你有所帮助。