Android Fragment + ViewPager +LazyLoad的应用

最近看到一篇微信文章,讲的是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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值