Android ListView加載頭視圖後容易忽略的問題

今天遇到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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章