Fragment实现懒加载

本文介绍了一种使用ViewPager和Fragment进行数据展示时实现懒加载的方法。通过重写setUserVisibleHint方法并在Fragment可见时加载数据,确保了良好的用户体验及资源的有效利用。

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

应用场景:使用viewpager和fragment来展示数据,要求滑动到fragment时加载此页面的数据。

解决这个问题其实很简单,fragment里有setUserVisibleHint这个方法,意思是当此fragment可见时执行此方法。所以我们的fragment可以这样写(为了方便起见,我们写一个BaseFragment,需要实现懒加载的继承BaseFragment即可):

public abstract class BaseFragment extends Fragment {

	// 第一次可见时的状态
	private boolean firstVisible = true;

	public boolean isFirstVisible() {
		return firstVisible;
	}

	public void setFirstVisible(boolean firstVisible) {
		this.firstVisible = firstVisible;
	}

	@Override
	public void setUserVisibleHint(boolean isVisibleToUser) {
		// TODO Auto-generated method stub
		super.setUserVisibleHint(isVisibleToUser);

		if (isVisibleToUser) {
			// 可见时执行的操作
			if (firstVisible) {
				firstVisibleInitData();
				firstVisible = false;
			}
		} else {
			// 不可见的时候执行操作
		}
	}

	/**
	 * 第一次可见状态下加载数据的方法(且只会加载一次)
	 */
	public abstract void firstVisibleInitData();


}

代码很简单,相信大家一目了然。

firstVisible这个变量用来记住第一次可见的状态,这个主要是因为setUserVisibleHint方法每次fragment可见的时候都会执行,而我的需求是第一次执行加载操作。

注意:setUserVisibleHint方法会在onCreateView之前调用,所以在firstVisibleInitData里不要执行ui操作,否则会报空指针错误,毕竟还没初始化。。。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值