viewpager+fragment之fragment懒加载

今天讲
advancedpagerslidingtabstrip取消预加载
首先我使用的viewpager+fragment还有viewpaget的指示器,三者结合着去做的
这里面viewpager指示器我用的第三方的框架 AdvancedPagerSlidingTabStrip
AdvancedPagerSlidingTabStrip是一种Android平台的导航控件,完美兼容Android自带库和兼容库的ViewPager组件,最低支持Android api v9。
支持一下功能:
支持Tab小圆点以及数量显示和隐藏
支持自定义Tab View
支持使用Bitmap、Drawable和本地resId来显示Tab图标
支持对Tab图标替换成自定义View来加载网络图片
支持自由设置小圆点、tab大小和位置等设置
支持实现如:微博等不均匀Tab的APP风格,并支持滑动
效果图这里就略了,这是项目地址自己去看 https://github.com/HomHomLin/AdvancedPagerSlidingTabStrip

这里借用的上篇Android 仿QQ首页的消息和电话的切换的案例

这里使用的是在fragment中继承setUserVisibleHint这个方法,
该方法用于告诉系统,这个Fragment的UI是否是可见的。所以我们只需要继承Fragment并重写该方法,
即可实现在fragment可见时才进行数据加载操作,即Fragment的懒加载。
a主要是做标记表示第一次进来时加载一次,其他时候进来不从新加载,不过如果有需求时可以把这个去掉
讲初始化数据放在这里面可以实现懒加载,
另外一中viewpager懒加载模式是完全从写viewpager,并修改其中的某个值这个方法以后我会交大家的

这个例子是使用了advancedpagerslidingtabstrip这个第三方框架

public class ProductFragment extends Fragment implements ViewPager.OnPageChangeListener {


    public CustomPagerSlidingTabStrip mAPSTS;
    public APSTSViewPager mVP;
     private int a = 0;
    private static final int VIEW_FIRST = 0;
    private static final int VIEW_SECOND = 1;
    private static final int VIEW_SIZE = 2;
    private Context mContext;
    private GudingFragment mFirstFragment = null;
    private ConvertibleFragment mConvertibleFragment = null;
    private View view;

    public static ProductFragment instance(Context mContext1) {
        ProductFragment view = new ProductFragment();

        return view;
    }
    //这里做了个判断,如果是第一次进来并且显示的是当前fragment那么久加载一次
    //同时这样还可以防止重复加载
    @Override
    public void setUserVisibleHint(boolean isVisibleToUser) {
        super.setUserVisibleHint(isVisibleToUser);
        if (isVisibleToUser && a == 0) {
            init();
            a++;
        }
    }
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        view = inflater.inflate(R.layout.fragment_product, null);
        findViews(view);
        return view;
    }

    private void findViews(View view) {
        mAPSTS = (CustomPagerSlidingTabStrip) view.findViewById(R.id.tabs2);
        mVP = (APSTSViewPager) view.findViewById(R.id.vp_main);
    }

    private void init() {
        mVP.setOffscreenPageLimit(2);
        FragmentAdapter adapter = new FragmentAdapter(getChildFragmentManager());

        mVP.setAdapter(adapter);
        //屏蔽掉滑动事件
        mVP.setNoFocus(true);
        adapter.notifyDataSetChanged();
        mAPSTS.setViewPager(mVP);
        mAPSTS.setOnPageChangeListener(this);
    }


    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

    }

    @Override
    public void onPageSelected(int position) {

    }

    @Override
    public void onPageScrollStateChanged(int state) {

    }

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值