处理空ListView

处理空listview


最近读书发现ListView竟然还自带处理空List.以前都是用

   if(list!=null && list.size()>0){
      //布局文件显示或隐藏
   }

原来ListView都已经封装好了

ListView用于展示列表数据,但当列表中无数据的时,ListView不会显示任何数据或提示,如果处理不好还会造成空指针,为了用户有更好的体验,这里应给无数据提示,还好ListView提供了一个方法-setEmptyView(),通过这个方法我们可以给ListView设置一个空数据下显示的默认提示.


 
    
   
   

在代码中,我们通过以下方式给ListView设置空数据时要显示的布局.

 ListView listView=(ListView)findViewById(R.id.listview);
 listView.setEmptyView(findViewById(R.id.tv_description))

通过以上代码,就给ListView在空数据时显示了默认描述,用来提示用户;而在有数据则不会显示.

以下是setEmptyView()的源码

private void updateEmptyStatus(boolean empty) {  
  if (isInFilterMode()) {     
         empty = false;  
  }  if (empty) {    
        if (mEmptyView != null) {    
              mEmptyView.setVisibility(View.VISIBLE);          
              setVisibility(View.GONE);       
    } else {          
  // If the caller just removed our empty view, make sure the list view is 
   visible            
     setVisibility(View.VISIBLE);      
    }      
    // We are now GONE, so pending layouts will not be dispatched.    
    // Force one here to make sure that the state of the list matches       
    // the state of the adapter.    
    if (mDataChanged) {             
          this.onLayout(false, mLeft, mTop, mRight, mBottom);      
    }  
   } else {       
      if (mEmptyView != null) mEmptyView.setVisibility(View.GONE);          
          setVisibility(View.VISIBLE);    
      }
}

你可能感兴趣的:(处理空ListView)