今天遇到listview的相關問題,因爲加了一個頭視圖,而我的行點擊事件是這樣寫的:
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
arraylist.get(position);
}
});
直接的結果就是數組越界了,越界的原因是因爲加了一個頭視圖後OnItemClickListener()的position是從1開始計數的。
於是我又加了一個頭視圖:
Button button = new Button(this);
button.setText("頭視圖1。。。");
listView.addHeaderView(button);
TextView textView = new TextView(this);
textView.setText("頭視圖2");
listView.addHeaderView(textView);
於是行點擊事件的position是從2開始計數的,所以我們可以知道,listview中的頭視圖也被listview認作爲它的一行,但是卻不會相應listview的ItemClickListener()的點擊事件,這個在平時開發中很容易忘記,在測試中除非剛好點擊到最後一行,否則也會很容易出錯。
再說一個,在下拉刷新控件(特指這個com.handmark.pulltorefresh.library.PullToRefreshListView)也要特別小心頭視圖造成的數組越界問題,它也是頭視圖的,只不過是被隱藏了,只有在下拉的時候纔出現。
over