0707開發備份( addHeaderView和addFooterView的注意事項)
1、 item內如果有button等控制元件時,在監聽listview的onitemclick事件時,焦點會被item內的button、 imagebutton等控制元件搶走,從而導致在listview設定了onitemclick事件後不會被觸發。解決方法是在初始化item的時候遮蔽掉 其內部button等控制元件的焦點獲取,具體方法可以在自定義item的根控制元件中呼叫:
[java] view plaincopy
setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS);
這樣就能阻塞字控制元件搶奪焦點,listview的onitemclick就能被正確觸發,同時對item內部的button等控制元件也沒有影響,他們在被點選時照樣可以觸發自身的點選事件。
2、 當listview需要新增headerview時,可以通過呼叫listview的addHeaderView(headView, null, false) 方法,該方法還有一個過載方法 addHeaderView(headView);這兩個方法的區別是前一個方法可以控制header是否可以被 selected,如果不想被selected則將第三個引數設定成false;
3、 接著上面說的新增header,新增header時呼叫的addHeaderView方法必須放在listview.setadapter前面,意思很明 確就是如果想給listview新增頭部則必須在給其繫結adapter前新增,否則會報錯。原因是當我們在呼叫setAdapter方法時會 android會判斷當前listview是否已經新增header,如果已經新增則會生成一個新的tempadapter,這個新的 tempadapter包含我們設定的adapter所有內容以及listview的header和footer。所以當我們在給listview新增了 header後在程式中呼叫listview.getadapter時返回的是tempadapter而不是我們通過setadapter傳進去的 adapter。如果沒有設定adapter則tempadapter與我們自己的adapter是一樣的。 listview.getadapter().getcount()方法返回值會比我們預期的要大,原因是新增了header。
4、接著上面的tempadapter說,我們自定義adapter裡面的getitem方法裡面返回的position是不包括header的,是我們自定義adapter中資料position編號從0開始,也就是說與我們傳進去的list的位置是一樣的。
[java] view plaincopy
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
Log.i("adapter", "position:"+position); //這個position就是我們資料的真實位置
}
而listview的onitemclick方法中:
[java] view plaincopy
public void onItemClick(AdapterView
headView和footerView都可以響應onItemClick方法,headView的position為0, footerView的position最大。
不過可以給headView和footerView設定OnClickListener來覆蓋OnItemClick,這樣,你點選headview或者footerView將觸發OnClickListener而不是onItemClick().
相關文章
- Android:ListView.addHeaderView()用法及其注意事項AndroidViewHeader
- 備份model 和msdb 資料庫時的注意事項資料庫
- 關於mysqldump備份非事務表的注意事項MySql
- 備份 master 資料庫時的注意事項AST資料庫
- ios開發注意事項iOS
- [Android開發] 注意事項Android
- WatchKit 開發注意事項
- delphi中的bpl開發注意事項
- SQL Server 2008 事務日誌備份注意事項SQLServer
- 微信小程式開發注意事項微信小程式
- uni-app開發注意事項APP
- 介面開發文件及注意事項
- 開發及上線中的注意事項
- spring cloud開發、部署注意事項SpringCloud
- 網站定製開發需要注意的事項網站
- MySQL5.7 透過邏輯備份遷移到GreatSQL注意事項MySql
- Storm介紹&實際開發注意事項ORM
- uni-app 跨端開發注意事項APP跨端
- IDEA Maven專案開發注意事項IdeaMaven
- Oracle9i資料庫的Standby端執行備份,注意事項~Oracle資料庫
- 主鏈開發有哪些值得注意的事項?
- iOS發包前注意事項iOS
- Unity3d遊戲開發注意事項Unity3D遊戲開發
- 直流負載箱的安全事項和注意事項有哪些?負載
- 搭建直播原始碼與軟體開發的注意事項原始碼
- 線上問診app開發的好處與注意事項APP
- 軟體開發中專案管理的注意事項(轉)專案管理
- 用outlook收發gmail的注意事項AI
- URLEncode和URLDecode的注意事項
- oracle 11G RAC 安裝前準備和注意事項Oracle
- Xlistview的注意事項View
- BIEE安裝前準備及注意事項
- 新車提車注意事項準備工作
- 幾點需要注意選擇APP開發外包團隊的注意事項APP
- Taro原理分析、遷移指南及開發注意事項
- 低程式碼開發平臺選型注意事項
- iOS開發中整合FFmpeg以及相關注意事項iOS
- web移動開發技能圖譜以及注意事項Web移動開發