標籤:android des style blog http color
所有問題,都是自己遇到過的。 但內容,有一半是自己寫的,也有一半是複製過來。 所以,寫成原創還請原諒
1. ListView添加標題後(addHeader())後,使用listView.getAdapter擷取的對像是被Header封裝後的HeaderViewListAdapter對像.所以,為了擷取自訂Adapter,方法為:
HeaderViewListAdapter adapter=(HeaderViewListAdapter)dayBillListView.getAdapter();DayReportAdapter dayAdapter=(DayReportAdapter)adapter.getWrappedAdapter();
2.item內如果有button等控制項時,在監聽listview的onitemclick事件時,焦點會被item內的button、imagebutton等控制項搶走,從而導致在listview設定了onitemclick事件後不會被觸發。解決方案是在初始化item的時候屏蔽掉其內部button等控制項的焦點擷取,具體方法可以在自訂item的根控制項中調用:setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS); 或者
在linearLayout中添加android:descendantFocusability="blocksDescendants" 同時也在button中添加android:focusable="false“
這樣就能阻塞字控制項搶奪焦點,listview的onitemclick就能被正確觸發,同時對item內部的button等控制項也沒有影響,他們在被點擊時照樣可以觸發自身的點擊事件。
3.當listview需要添加headerview時,可以通過調用listview的addHeaderView(headView, null, false) 方法,該方法還有一個重載方法 addHeaderView(headView);這兩個方法的區別是前一個方法可以控制header是否可以被selected,如果不想被selected則將第三個參數設定成false;
4.接著上面說的添加header,添加header時調用的addHeaderView方法必須放在listview.setadapter前面,意思很明確就是如果想給listview添加頭部則必須在給其綁定adapter前添加,否則會報錯。原因是當我們在調用setAdapter方法時會android會判斷當前listview是否已經添加header,如果已經添加則會產生一個新的HeaderViewListAdapter,這個新的HeaderViewListAdapter包含我們設定的adapter所有內容以及listview的header和footer。所以當我們在給listview添加了header後在程式中調用listview.getadapter時返回的是tempadapter而不是我們通過setadapter傳進去的adapter。如果沒有設定adapter則HeaderViewListAdapter與我們自己的adapter是一樣的。listview.getadapter().getcount()方法傳回值會比我們預期的要大,原因是添加了header。
5. addHeaderView()的ListView,onItemSelected方法返回的position大1,因為把header也算進去了。
我們自訂adapter裡面的getitem方法裡面返回的position是不包括header的,是我們自訂adapter中資料position編號從0開始,也就是說與我們傳進去的list的位置是一樣的。
@Overridepublic View getView(int position, View convertView, ViewGroup parent) {// TODO Auto-generated method stubLog.i("adapter", "position:"+position); //這個position就是我們資料的真實位置}
而listview的onitemclick方法中:
public void onItemSelected(AdapterView<?> parent, View view, int position, long id)
position是當前click的位置,這個位置是指在HeaderViewListAdapter中的位置,從0開始如果listview中添加了header則0代表header。
本文轉載自:http://blog.csdn.net/hutengfei0701/article/details/8494237