Android開發技巧(處理ListView數據為空的情況)

jopen 9年前發布 | 32K 次閱讀 Android Android開發 移動開發

  在移動平臺上為用戶展示數據的一個常用方法是將數據填充進一個List內,而此時需要注意的一點就是:
原文地址:(http://blog.csdn.net/vector_yi/article/details/24936163)

          如何處理需要填充的數據為空的情況?

   
      ListView及其他繼承自AdapterView的類都有一個簡便的處理這種情況的方法:setEmptyView(View)
     當ListView的Adapter為空或者Adapter的isEmpty()方法返回true的時候,它將會把設置的emptyview繪制出來。

     舉個栗子,假設我們需要創建一個應用來管理我們的待辦事項,我們的主頁面將會是一個用來展示這些待辦事項的ListView。
     而當我們第一次載入進這個應用時,待辦事項必然為空。此時我們就可以利用一個圖片或者一段描述性的話來表達“無待辦事項”。
     看看XML布局文件:
    <FrameLayout xmlns:android = "http://schemas.android.com/apk/res/android"  
       android:layout_width= "fill_parent"  
       android:layout_height= "fill_parent"  
       android:orientation= "vertical" >  

       <ListView  
           android:id ="@+id/my_list_view"  
           android:layout_width ="fill_parent"  
           android:layout_height ="fill_parent" />  

       <ImageView  
           android:id ="@+id/empty_view"  
           android:layout_width ="fill_parent"  
           android:layout_height ="fill_parent"  
           android:src ="@drawable/empty_view" />  

    lt;/FrameLayout>  

再來看自定義的drawable/empty_view文件:
    <shape xmlns:android = "http://schemas.android.com/apk/res/android"  
        android:shape= "rectangle" >  
        <solid android:color= "#AA00FF00" />  
    </shape>  

     是一個自定義的shape,當ListView沒數據的時候才展現出來。

     最后再看MainActivity文件:
    public class MainActivity extends Activity {  

      private ListView mListView;  

      @Override  
      public void onCreate (Bundle savedInstanceState ) {  
        super. onCreate( savedInstanceState );  
        setContentView (R .layout .main );  

        mListView = (ListView ) findViewById (R .id .my_list_view );  
        mListView. setEmptyView (findViewById (R .id .empty_view ));  
        /*String[] strs=new String[]{"1","2"}; 
        ArrayAdapter<String> adapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,strs); 
        mListView.setAdapter(adapter);*/  

      }  

    }  

  僅僅創建一個ListView并設置了EmptyView為main.xml中創建的ImageView。注釋內的代碼用來測試當ListView有數據時,emptyview會不會顯示。

     當然,你可以利用ViewStub來作為EmptyView,利用ViewStub可以延遲加載視圖,確保在不需要顯示EmptyView的時候它不會被渲染。關于ViewStub的用法,我在之前的博文《延遲加載和避免重復渲染》已進行過敘述。
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!