四大组件

Fragment 中 懒加载

2019-09-26  本文已影响0人  小慧sir
public abstract class BaseFragment extends Fragment {  
  protected boolean isCreatView = false;//是否加载过视图 
   protected boolean isLoadData = false; //是否加载过数据   
  @Nullable  
  @Override  
  public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {  
 View rootView = inflater.inflate(provideContentViewId(), container, false);   
    ButterKnife.bind(this, rootView);   
    initView(rootView);    
    isCreatView = true;//加载过视图设置为true    
    isloadData();    
    return rootView;   
 }    
/**     
* 视图是否已经对用户可见,系统的方法    
*/   
 @Override 
   public void setUserVisibleHint(boolean isVisibleToUser) {      
  super.setUserVisibleHint(isVisibleToUser);    
    isloadData();   
 }   
  private void isloadData() {  
      if (!isCreatView) {//判断是否加载过视图     
       return;      
  }       
  if (getUserVisibleHint()) { //判断是否可见    
        if (!isLoadData){  //判断是否加载过数据          
      initData();        
        initListener();         
       isLoadData = true;//加载过数据设置为true  
          }      
  } else {       
     if (isLoadData) {        
        stopLoad();       
     }     
   }   
 }    

 //得到当前界面的布局文件id(由子类实现)   
 protected abstract int provideContentViewId();
     /**  
   * 加载view  
   */ 
   public void initView(View rootView) {  
   }   
  /** 
    * 加载数据  
   */    public void initData() {  
   }     
/**   
  * 事件监听 
    */  
  public void initListener() { 
    }    
 /**   
  * 停止加载   
  */   
 protected void stopLoad() {  
   }    
 /**
     * 销毁视图   
   */   
 @Override  
  public void onDestroyView() {  
      super.onDestroyView();   
     isCreatView = false;  
      isLoadData = false;   
  }
}

上一篇 下一篇

猜你喜欢

热点阅读