Android Fragment + ViewPager +LazyLoad的应用

来源:互联网 发布:手机视频快进软件 编辑:程序博客网 时间:2024/06/12 20:25

最近看到一篇微信文章,讲的是ViewPager + Fragment的懒加载。博主以前也遇到过这样的问题,要在APP启动的时候判断从网络获取的一个字段,来确定是否隐藏一个列表的item,当时直接在主Activity里获取字段,然后设置item显示状态,结果发现每次服务器动态改变字段后,APP根本不按照字段来显示/隐藏item,打log后发现在进入APP的时候,ViewPager的预加载属性在捣鬼,主Activity里字段还没获取,结果ViewPager第三个页面就已经加载出来了。后来开线程解决了问题。由于深有体会,所以今天就写写ViewPager+Fragment,顺便应用LazyLoad,在此感谢原博主尹star。

先晒图:
这里写图片描述

免积分下载链接:
http://download.csdn.net/detail/black_dreamer/9579555
ViewPager + Fragment做可点击、滑动翻页的介绍资料,在网络上已经有一大堆了,我就不细说啦,简单总结下有以下几点:

  • 布局上分为Activity布局(ViewPager+底部菜单一堆),Fragment布局(每一个Fragment对应相应的布局)

  • 创建自定义Fragment类,页面有几个就创建几个,在onCreateView 方法里从布局中获得view并返回

 public View onCreateView(LayoutInflater inflater,                              @Nullable ViewGroup container,                             @Nullable Bundle savedInstanceState) {        View v = inflater.inflate(R.layout.fragment_home,container,false) ;        return v ;    }
  • 创建自定义的Adapter,继承自FragmentStatePagerAdapter 或者 FragmentPagerAdapter
public class FragmentAdapter extends FragmentStatePagerAdapter  {    public List<Fragment> mFragments ;    public FragmentAdapter(FragmentManager fm) {        super(fm);    }    public FragmentAdapter(FragmentManager fm, List<Fragment> fragments) {        super(fm);        this.mFragments = fragments;    }    @Override    public Fragment getItem(int position) {        return mFragments.get(position);    }    @Override    public int getCount() {        return mFragments.size();    }}
  • 在Activity中实例化自定义的几个Fragment类,并添加到List中,用List创建并初始化自定义的Adapter,然后用ViewPager的setAdapter方法去设置就可以了。
  • 底部菜单的点击选中,可以通过ViewPager.setCurrentItem 方法去设置ViewPager当前选中的页面,按钮显示效果嘛,就用selector+动态设置背景图片就可以了。

下载链接:http://download.csdn.net/detail/black_dreamer/9579555

0 0
原创粉丝点击