【问题标题】:Reload all fragments at once present in a ViewPager Android一次重新加载 ViewPager Android 中存在的所有片段
【发布时间】:2016-09-28 09:01:51
【问题描述】:

我的活动中有一个 ViewPager,其中包含 5 个片段,我 修复了工具栏上用作过滤器的菜单,单击菜单 item 我需要更改所有片段的视图,

我曾经清除 ViewPager 中的所有片段并附加新的片段实例,这会显示正确的视图,但同时创建新的 我曾经在屏幕上显示进度条的视图,但它没有显示为 我们设置,它在所有视图更改后调用。

我怀疑的是这种通过用新实例替换片段来更改所有视图的正确方法,或者有任何其他方法可以根据我的上下文更改片段中的数据

谢谢


编辑:
清除适配器以创建新视图

viewPagerAdapter.fragmentArrayList.clear();
viewPagerAdapter.fragmentTitle.clear();
viewPagerAdapter.notifyDataSetChanged();

【问题讨论】:

  • 你能把代码放得更清楚吗?

标签: android android-fragments android-viewpager android-filter


【解决方案1】:

如果您想一次刷新所有片段,您可以再次setAdapterViewPager,它会像这样刷新所有片段;

    mViewPager.setAdapter(yourAdapter);
    //If you want set current postion for adapter
    mViewPager.setCurrentItem(theCurrentPage);

【讨论】:

  • 是的!它已经工作了,但是在执行此操作时有些卡住了
  • 我曾经在创建视图时在屏幕上显示一个进度条,但它卡住了
  • 在再次设置适配器之前显示进度条
  • 是的,我做了同样的事情,但它不起作用,它只有在设置视图后才会显示..这就是问题
【解决方案2】:

如果您只想过滤ViewPager 显示的片段列表,那么您有理由怀疑销毁和重新创建所有片段是否是一种好方法。这相当于不必要地浪费大量资源。

相反,您可以操作您的片段列表(和片段标题列表?),然后调用notifyDataSetChanged() 或按照here 的说明实现Filter

所以你去:

viewPagerAdapter.fragmentArrayList.remove(index);

viewPagerAdapter.fragmentArrayList.remove(fragment);

然后你说:

viewPagerAdapter.notifyDataSetChanged();

关于进度条,它位于您的 XML 布局中的什么位置?在视图寻呼机内?然后把它移到外面。别的地方?然后向我们展示您的 XML 以及创建和显示它的代码。

【讨论】:

  • 是的!我做了同样的工作,我需要清除所有的片段,所以我使用了 clear()。它是进度对话框而不是进度条(在活动中)
  • 您是说与问题的标题相反,您的问题不是是否以及如何一次重新加载所有片段,而是如何显示进度对话框?那就给我们更多代码吧!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-14
相关资源
最近更新 更多