日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

南京学思XSuperNest使用addHeaderView注意事项

發(fā)布時(shí)間:2023/12/29 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 南京学思XSuperNest使用addHeaderView注意事项 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在做學(xué)思鋼板管理系統(tǒng)的項(xiàng)目中用到了addHeaderView,現(xiàn)在把注意事項(xiàng)記下來
1、item內(nèi)如果有button等控件時(shí),在監(jiān)聽listview的onitemclick事件時(shí),焦點(diǎn)會(huì)被item內(nèi)的button、imagebutton等控件搶走,從而導(dǎo)致在listview設(shè)置了onitemclick事件后不會(huì)被觸發(fā)。解決方法是在初始化item的時(shí)候屏蔽掉其內(nèi)部button等控件的焦點(diǎn)獲取,具體方法可以在自定義item的根控件中調(diào)用:
[java] view plaincopy
setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS);
這樣就能阻塞字控件搶奪焦點(diǎn),listview的onitemclick就能被正確觸發(fā),同時(shí)對(duì)item內(nèi)部的button等控件也沒有影響,他們?cè)诒稽c(diǎn)擊時(shí)照樣可以觸發(fā)自身的點(diǎn)擊事件。
2、當(dāng)listview需要添加headerview時(shí),可以通過調(diào)用listview的addHeaderView(headView, null, false) 方法,該方法還有一個(gè)重載方法 addHeaderView(headView);這兩個(gè)方法的區(qū)別是前一個(gè)方法可以控制header是否可以被selected,如果不想被selected則將第三個(gè)參數(shù)設(shè)置成false;
3、接著上面說的添加header,添加header時(shí)調(diào)用的addHeaderView方法必須放在listview.setadapter前面,意思很明確就是如果想給listview添加頭部則必須在給其綁定adapter前添加,否則會(huì)報(bào)錯(cuò)。原因是當(dāng)我們?cè)谡{(diào)用setAdapter方法時(shí)會(huì)android會(huì)判斷當(dāng)前l(fā)istview是否已經(jīng)添加header,如果已經(jīng)添加則會(huì)生成一個(gè)新的tempadapter,這個(gè)新的tempadapter包含我們?cè)O(shè)置的adapter所有內(nèi)容以及l(fā)istview的header和footer。所以當(dāng)我們?cè)诮olistview添加了header后在程序中調(diào)用listview.getadapter時(shí)返回的是tempadapter而不是我們通過setadapter傳進(jìn)去的adapter。如果沒有設(shè)置adapter則tempadapter與我們自己的adapter是一樣的。listview.getadapter().getcount()方法返回值會(huì)比我們預(yù)期的要大,原因是添加了header。
4、接著上面的tempadapter說,我們自定義adapter里面的getitem方法里面返回的position是不包括header的,是我們自定義adapter中數(shù)據(jù)position編號(hào)從0開始,也就是說與我們傳進(jìn)去的list的位置是一樣的。
[java] view plaincopy
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
Log.i("adapter", "position:"+position); //這個(gè)position就是我們數(shù)據(jù)的真實(shí)位置
}
而listview的onitemclick方法中:
[java] view plaincopy
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3)

arg2是當(dāng)前click的位置,這個(gè)位置是指在tempadapter中的位置,從0開始如果listview中添加了header則0代表header。

?

轉(zhuǎn)載于:https://www.cnblogs.com/njxsYJY/p/4979288.html

總結(jié)

以上是生活随笔為你收集整理的南京学思XSuperNest使用addHeaderView注意事项的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。