0

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上的数据。

当我将其移至寻呼机 3 继续时,寻呼机 1 将进入停止状态,并且寻呼机 4 将被加载。

pager1-> pager2-> pager3-> pager4

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

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

pager3 处于显示状态,pager1 处于停止状态,pager2、pager4 处于恢复状态但不显示

我需要我的应用程序做什么!

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

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

4

3 回答 3

2

像这样。

public class FragmentSample extends Fragment{
    ...  
    @Override
    public void setUserVisibleHint(boolean isVisibleToUser) {
        super.setUserVisibleHint(isVisibleToUser);
        if (isVisibleToUser) {
           // load you data
        }
    }
    ...
}
于 2016-03-23T04:10:26.950 回答
0

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

于 2013-10-17T06:52:06.720 回答
0

ViewPager 项的延迟加载数据

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

于 2015-09-22T13:35:42.357 回答