您的位置:首页 > 移动开发 > Android开发

Android ViewPager动态加载数据的实现

2016-08-04 15:45 483 查看
  场景:ViewPager里有多个页面,每个页面都有网络请求。

  由于ViewPager有预加载性质,所以在第一个页面加载的时候,第二个页面也会进行网络请求,如果有加载进度条的话通常会看到第一个页面数据加载完成后加载进度条还在显示,那是因为第二个页面还在加载数据,常常让人不胜其烦。看了一些大牛的博客发现的是从ViewPager源码入手,或者从adapter里找解决方案,感觉有点复杂,所以在这里我发表下我的拙见及我的解决方法。

  通常这种需求是ViewPager与Fragment配合使用,与其他配合也是同理。这里就以Fragment举例。注:由于本人没有贴源码的习惯,只讲个大致思路,所以请各位见谅。

  我的方法是将Fragment请求数据统一封装为一个方法,并设置一个布尔类型的变量,这个变量待会儿再说什么作用。然后为你的ViewPager设置一个监听addOnPageChangeListener(),在回调中根据选择的不同页面调用不同页面的数据加载的方法。相信你们也看出来这样处理的话会产生一个问题,就是在每次选择页面的时候都会去重新加载数据,这显然用户体验不好,平白耗费流量。前面所说的布尔类型的变量就派上用场了,在Fragment里设置这个变量用来判断是否加载过这个页面的数据,如果此页面加载过数据那么在选中此页面时就不再加载数据。

  ViewPager还有一个销毁机制,有1,2,3,顺序排列的3个页面,当选中第3个页面时,第1个页面会被销毁,就导致了选中第1个页面时还是会重新加载数据,因为第1个页面被销毁后又进行了重新创建。解决的办法是加上,mViewPager.setOffscreenPageLimit(2); ViewPager就不会销毁页面了,流畅度显著提升。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: