天天看點

listview 設定數組為空

listview.setEmpty(View view);

使用listView或者gridView時,當清單為空時,有時需要顯示一個特殊的empty view來提示使用者,今日對這個方法進行一下小結,書寫的方式有三種:

1.一般情況下,繼承ListActivity,隻要

<ListView android:id="@id/android:list".../> 
<TextView android:id="@id/android:empty.../>      

當清單為空時就會自動顯示TextView

2.如果繼承Activity的話,想出現上面的效果,就需要手動代碼

<ListView android:id="@+id/list" .../> 
 <TextView android:id="@+id/empty" .../> 

ListView list= (ListView)findViewById(R.id.mylist); 
TextView tv= (TextView)findViewById(R.id.myempty); 

list.setEmptyView(tv);       

3.我們随性的寫法,可用。

private TextView tv ;
 private ListView listView;
listView = (ListView) view.findViewById(R.id.ListView_nav_search_list_poi);
listView.setAdapter(adapter);
tv = new TextView(context);
tv.setVisibility(View.GONE);
tv.setText(R.string.map_favorite_no_data);
((ViewGroup)(listView.getParent())).addView(tv);
listView.setEmptyView(tv );      

注意:這裡還沒有完,如果資料集合發生變更,從有資料到無資料,再有無資料到有資料時,視圖會還停留在無資料的狀态,不會顯示listview,

       這裡需要添加一個方法

public void changePoiItems(List<PoiItem> poiItems){
        this.poiItems = poiItems;
        if(poiItems != null && poiItems.size() > 0){
            tv.setVisibility(View.GONE);
            listView.setVisibility(View.VISIBLE);
        }
        //改變資料集合
        if(adapter != null){
            adapter.changeData(poiItems);
        }
    }      

發生資料變更的時候,将視圖狀态改變下即可。

繼續閱讀