Viewpager Lazy加载数据

时间:2013-10-17 04:54:00

标签: android-viewpager

ViewPager有一个公共函数setOffscreenPageLimit(http://developer.android.com/reference/android/support/v4/view/ViewPager.html#setOffscreenPageLimit(int)),它是什么?以下是doc:

的说明

将处于空闲状态的视图层次结构中当前页面任一侧应保留的页数设置为空闲状态。超出此限制的页面将在需要时从适配器重新创建。(我测试过它,关于函数的最小参数为1,尽管我将其设置为0,它的工作原理为0) < / p>

我的演示

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

show the situation about the first pager load

从图片中我们可以知道,当应用程序显示寻呼机1时,寻呼机2已经加载,因此我们可以将寻呼机移动到寻呼机2并且不需要再次在寻呼机2上加载数据。

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

pager1-&GT; pager2 - &gt; pager3 - &gt; pager4

停止 - &gt;简历但不显示 - &gt;简历和节目 - &gt;恢复但不显示

以下是显示上述情况的图片!

pager3 in show statsu,pager1 in stop status,and pager2,pager4 in resume but not show

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

我只是希望viewpager加载寻呼机正在显示的数据。例如,当应用程序首次运行时,它只会初始化pager1并加载pager1中所需的数据。 Pager2不会加载数据。

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

3 个答案:

答案 0 :(得分:2)

就像这样。

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

答案 1 :(得分:0)

setOffscreenPageLimit()通常用于设置将在空闲状态下设置的页面限制。当您在视图寻呼机中有一长串页面时,我们使用此方法。这种方法可以防止出现低内存错误,并且在寻呼机上设置延迟加载时也很有用。

答案 2 :(得分:0)

Lazy load data for ViewPager Items

也许你可以看到我的答案使用setUserVisibleHint()给客户一个片段