【问题标题】:Viewpager Lazy load dataViewpager 延迟加载数据
【发布时间】:2013-10-17 04:53:59
【问题描述】:

ViewPager 有一个公共函数 setOffscreenPageLimit (http://developer.android.com/reference/android/support/v4/view/ViewPager.html#setOffscreenPageLimit(int)),它是什么?这是文档中的描述:

设置在空闲状态下视图层次结构中当前页面任一侧应保留的页面数。超出此限制的页面将在需要时从适配器重新创建。(我已经测试过,该功能的最小参数是 1,虽然我将它设置为 0,它和 0 一样工作)

我的演示怎么样

现在,我的演示包含一个视图分页器,其中包含 6 个片段。当它运行时,视图分页器将加载第一个分页器和第二个分页器,但它只在屏幕上显示第一个分页器,当我们移动到第二个分页器时,它将加载第三个寻呼机。所有这些都很容易理解。

从图片中我们可以知道app显示pager 1时pager 2已经加载,所以我们可以将pager移动到pager2,不需要再次加载pager 2上的数据。

当我将它移到 pager 3 continue 时,pager 1 将进入停止状态,pager 4 将被加载。

pager1-> pager2 -> pager3 -> pager4

停止 -> 恢复但不显示 -> 恢复并显示 -> 恢复但不显示

这是显示上面发生了什么的图片!

我需要我的应用做什么!

我只想让viewpager加载pager现在显示的数据。例如,当应用程序第一次运行时,它只初始化pager1并在pager1中加载需要的数据。 Pager2 不会加载数据。

这是我的演示:https://github.com/shellshy/LazyViewPager

【问题讨论】:

    标签: android-viewpager


    【解决方案1】:

    就这样。

    public class FragmentSample extends Fragment{
        ...  
        @Override
        public void setUserVisibleHint(boolean isVisibleToUser) {
            super.setUserVisibleHint(isVisibleToUser);
            if (isVisibleToUser) {
               // load you data
            }
        }
        ...
    }
    

    【讨论】:

      【解决方案2】:

      setOffscreenPageLimit() 通常,我们用于设置将设置为空闲状态的页面限制。当您在视图寻呼机中有很长的页面列表时,我们使用此方法。这种方法可以避免发生内存不足的错误,并且在您在寻呼机上设置延迟加载时也很有用。

      【讨论】:

        【解决方案3】:

        Lazy load data for ViewPager Items

        也许你可以看到我的答案,它使用 setUserVisibleHint() 来客户片段

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-12-02
          • 1970-01-01
          • 1970-01-01
          • 2011-12-22
          • 1970-01-01
          • 1970-01-01
          • 2014-02-13
          相关资源
          最近更新 更多