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);
}
}
發生資料變更的時候,将視圖狀态改變下即可。