Viewpager Lazy加载数据(Viewpager Lazy load data)

编程入门 行业动态 更新时间:2024-10-28 22:24:30
Viewpager Lazy加载数据(Viewpager Lazy load data)

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

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

我的演示怎么样?

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

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

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

pager1-> pager2 - > pager3 - > pager4

停止 - >恢复但不显示 - >简历和显示 - >恢复但不显示

这是显示上面发生的事情的图片!

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

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

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

ViewPager has a public function setOffscreenPageLimit (http://developer.android.com/reference/android/support/v4/view/ViewPager.html#setOffscreenPageLimit(int)), What is it? Here is the description from the doc:

Set the number of pages that should be retained to either side of the current page in the view hierarchy in an idle state. Pages beyond this limit will be recreated from the adapter when needed.(I had test it,the min params about the function is 1,althought I set it to 0,It work as well as 0)

How about my demo

Now,my demo contains a viewpager with 6 fragment in it.When it run,the viewpager will load the first pager and the second pager,but it only show the first pager on the screen,When we move to the second pager,It will load the third pager.All these is easy to understand.

From the picture we can know the pager 2 had loaded when the app show pager 1,so we can move pager to pager2 and does no need to load the data on pager 2 again.

When i move it to pager 3 continue,Pager 1 will go into stop status,and pager 4 will be loading.

pager1-> pager2 -> pager3 -> pager4

stop -> resume but not show -> resume and show -> resume but not show

Here is the picture to show what is happend about above!

What I need my app do!

I just want the viewpager load the data which pager is showing now.For example,When the app first run,It only init the pager1 and load what the data need in pager1. Pager2 will not load data.

Here is my demo:https://github.com/shellshy/LazyViewPager

最满意答案

像这样。

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

Just like this.

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

更多推荐

本文发布于:2023-07-14 17:21:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1106073.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:加载   数据   Lazy   Viewpager   load

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!