ListView的FootView和HeadView
需求:根據某種需要,可能需要動態調整listview的頁首頁尾,譬如將header作為顯示板使用。
難點:listView.addHeaderView()方法必須在setAdapter()方法前呼叫,否則就會拋異常。至於為什麼會拋異常,檢視下ListView的原始碼即可發現。因此,在設定HeaderView之後又想將headerView移除或者隱藏,則需要繞很大的彎子:將adapter儲存起來-移除headerView-(或者更換headerview)-再將adapter設定上去。
隱藏headerview思路:使用View.GONE屬性進行隱藏
嘗試1.itemView結構如下:
<LinearLayout android:id="@+id/item_root"
android:layout_width="fill_parent"
android:layout_height="50dip"
android:orientation="vertical" >
<TextView android:id="@+id/tv_1" />
<TextView android:id="@+id/tv_2" />
</LinearLayout >
此時,有如下邏輯:
ListView listView = xxxx;
listView.addHearderView(item_root);
listView.setAdapter(adapter);
adapter.add(xxxxx);新增資料
item_root.setVisibility(View.GONE);
按道理,最後一句應該可以起到隱藏headerView的目的,但實際效果(魅族MX上測試發現),item_root的地方的確沒有控制元件了,但item_root佔用的50dip高度還在,即原來headerView的地方變成了一片空白區域!和View.INVISIBILE效果一樣了,汗死!
繼續嘗試如下,修改itemView的結構:
<LinearLayout android:id="@+id/item_root"
android:layout_width="fill_parent"
android:layout_height="50dip"
android:orientation="vertical" >
<LinearLayout android:id="@+id/item_container"
<TextView android:id="@+id/tv_1" />
<TextView android:id="@+id/tv_2" />
</LinearLayout>
</LinearLayout >
此結構較之前的結構增加了一個多餘的Layout(item_container)來囊括item內部控制元件。此時,如果在item_container .setVisibility(View.GONE)則可以完美實現隱藏HeaderView的目的!
結論:View.GONE屬性貌似不作用在根Layout上。
新的問題:
如果在item_root上使用了Shape背景,且此背景存在MinSize,那麼此方法又失效了。。。
難點:listView.addHeaderView()方法必須在setAdapter()方法前呼叫,否則就會拋異常。至於為什麼會拋異常,檢視下ListView的原始碼即可發現。因此,在設定HeaderView之後又想將headerView移除或者隱藏,則需要繞很大的彎子:將adapter儲存起來-移除headerView-(或者更換headerview)-再將adapter設定上去。
隱藏headerview思路:使用View.GONE屬性進行隱藏
嘗試1.itemView結構如下:
<LinearLayout android:id="@+id/item_root"
android:layout_width="fill_parent"
android:layout_height="50dip"
android:orientation="vertical" >
<TextView android:id="@+id/tv_1" />
<TextView android:id="@+id/tv_2" />
</LinearLayout >
此時,有如下邏輯:
ListView listView = xxxx;
listView.addHearderView(item_root);
listView.setAdapter(adapter);
adapter.add(xxxxx);新增資料
item_root.setVisibility(View.GONE);
按道理,最後一句應該可以起到隱藏headerView的目的,但實際效果(魅族MX上測試發現),item_root的地方的確沒有控制元件了,但item_root佔用的50dip高度還在,即原來headerView的地方變成了一片空白區域!和View.INVISIBILE效果一樣了,汗死!
繼續嘗試如下,修改itemView的結構:
<LinearLayout android:id="@+id/item_root"
android:layout_width="fill_parent"
android:layout_height="50dip"
android:orientation="vertical" >
<LinearLayout android:id="@+id/item_container"
<TextView android:id="@+id/tv_1" />
<TextView android:id="@+id/tv_2" />
</LinearLayout>
</LinearLayout >
此結構較之前的結構增加了一個多餘的Layout(item_container)來囊括item內部控制元件。此時,如果在item_container .setVisibility(View.GONE)則可以完美實現隱藏HeaderView的目的!
結論:View.GONE屬性貌似不作用在根Layout上。
新的問題:
如果在item_root上使用了Shape背景,且此背景存在MinSize,那麼此方法又失效了。。。
規避處理:如果的確必須要在HeaderView上新增背景background的話,那麼請將background設定在item_container上吧,不要設定在item_root上,如此就可以規避新的問題了。
》引用:http://blog.sina.com.cn/s/blog_70b9730f01014sgm.html ; http://my.oschina.net/mugg/blog/157866
相關文章
- 為RecyclerView新增FootView和HeadViewView
- ListView的複用和快取機制View快取
- Adapter的getViewTypeCount和getItemViewType及-ListView/GridViewAPTView
- ItemsControl和ListView、ListBox的區別View
- Flutter進階:深入探究 ListView 和 ScrollPhysicsFlutterView
- Android的ListViewAndroidView
- ListViewView
- android中的ListViewAndroidView
- Flutter 中 ListView 的使用FlutterView
- fragment中listview的onitemclicklistenerFragmentView
- Android中ListView.getCount()與ListView.getChildCount()區別和OnScrollListener()各個引數的區別AndroidView
- 安卓 listview安卓View
- QML::ListViewView
- android NestedScrollView和ListView衝突問題AndroidView
- ScrollView與ListView合用問題(正確計算Listview的高度)View
- Flutter——ListView的建立方式FlutterView
- [- Flutter 必備 -] ListView的使用FlutterView
- ListView中的觀察者模式View模式
- ListView 中的 RecycleBin 機制View
- Android裡透明的ListViewAndroidView
- android listview checkedTextView 的使用AndroidTextView
- ListView中selector的用法View
- Flutter的ListView(靜態列表)FlutterView
- ListView優化View優化
- Android ListViewAndroidView
- c# listviewC#View
- ListView與ScrollView衝突,計算ListView的高度Item,然後重繪View
- Android回顧--(十) ListView的優化和多佈局複用AndroidView優化
- android的listview的詳細用法AndroidView
- QT - 13.1.1 ListView 的簡單使用QTView
- 正確處理listview的positionView
- android:ListView 的簡單用法AndroidView
- android:定製 ListView 的介面AndroidView
- 實現帶圖示的ListViewView
- Listview獲取選中行的值View
- [譯]Flutter - 掌握ListViewFlutterView
- Flutter - Listview 詳解FlutterView
- ListView簡單使用View