【发布时间】:2013-11-20 14:29:37
【问题描述】:
我有一个ViewPager,它通过FragmentStatePagerAdapter 持有Fragments。假设寻呼机最初拥有以下页面 (Fragments):
A - B - C - D
当用户滑动时,他可以从A移动到B,B到@987654329 @ 等
但是有些情况下,当用户在A页面上更改了一些选项时,他可以不移动到B,而是C:
A - C - D
然后用户返回 A,修改某些内容并重新启用 B:
A - B - C - D
我怎样才能实现这种非常动态的行为?当用户更改某些内容然后重新填充ViewPager 时,我无法在任何时候添加Fragments,因为它很慢并且会中断流程。
【问题讨论】:
-
类似于
ListView,你可以简单地用不同的数据更新你ViewPager后面的FragmentStatePagerAdapter。在每种情况下,给Adapter一组不同的Fragments。 -
但是如果我调用
notifyDatasetChanged,ViewPager会重新创建Fragments 的整个列表,并且跳转到第一页,每个Fragment也会丢失状态。 -
不要在 ViewPager 本身中创建片段,以免它们丢失状态。创建一次,例如在创建 FragmentActivity 时。之后,使用引用,不要创建新的。
-
这不是一个坏主意。你有什么建议避免 ViewPager 在收到通知时跳转到第一页?
-
ViewPager.setCurrentItem(int position, boolean smoothscroll);
标签: android android-fragments android-viewpager android-adapter fragmentstatepageradapter