ViewPager+Fragment 常使用懒加载

本文介绍了一种在Android应用中实现ViewPager结合Fragment时的懒加载技术。通过自定义BaseFragment并利用setUserVisibleHint方法判断Fragment的可见性,进而决定是否进行数据加载,避免不必要的资源消耗。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用ViewPager+Fragment

1.封装BaseFragment
2.子Fragment继承,使用

解决ViewPager滑动的时候,滑动到那个界面,就加载那个界面,如果已经加载完毕的,就直接显示不需要再次加载了

import android.support.v4.app.Fragment;

public abstract class BaseFragment extends Fragment {

/** Fragment当前状态是否可见 */
protected boolean isVisible;


@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser);

    if(getUserVisibleHint()) {
        isVisible = true;
        onVisible();
    } else {
        isVisible = false;
        onInvisible();
    }
}


/**
 * 可见
 */
protected void onVisible() {
    lazyLoad();     
}


/**
 * 不可见
 */
protected void onInvisible() {


}


/** 
 * 延迟加载
 * 子类必须重写此方法
 */
protected abstract void lazyLoad();

}

子Fragment继承

/** 标志位,标志已经初始化完成 */
private boolean isPrepared;

 @Override
protected void lazyLoad() {

    if(!isPrepared || !isVisible) {
        Log.v("dalongs","加载过了,直接显示");
        return;
    }else{
        if(dynamicList!=null&&dynamicList.size()<1) {
            Log.v("dalongs", "重新加载数据");
            showLoadView();
            initData();
        }
    }

}

/*
*Fragment初始化View的时候
*/
public void  oncreateview(....){
    isPrepared=true;//
    lazyLoad();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值