android自定義適配器的ListView的事件監聽
- 自定義適配器的ListView的事件監聽原理
- 案例需要實現的功能
- 功能實現步驟
- 說明
</ol> </blockquote>自定義適配器的ListView的事件監聽原理
在自定義適配器類的getView方法中,我們可以得到每個item中的所有的控件對象。想對某個控件進行點擊監聽,可以調用View對象的setOnClickListener方法,調用setOnClickListener方法,需要傳遞一個View.OnClickListener對象作為參數,事件觸發時,View.OnClickListener對象的onClick方法會被調用,同時把被點擊的控件對象作為參數傳回onClick方法,我們在onClick方法中,調用被點擊的控件的getId方法就知道是哪個控件被點擊,為了知道是list中position為多少的控件被點擊,我們可以可getView方法中調用需要監聽的控件的setTag(position)方法,設置該控件的Tag為position,在onClick方法中我們調用被點擊控件的getTag方法就可知道position為多少了。 最好,把事件響應的代碼放在Activity中。
案例需要實現的功能
在ListView中,每一行有兩個Button:itemButton1和itemButton2,對這兩個按鈕的點擊事件進行監聽,被點擊時,用Toast顯示該時itemButton1還是itemButton2被點擊了,被點擊的按鈕是第幾行。
![]()
功能實現步驟
1.在MyListViewAdapter適配器中增加View.OnClickListener類型的成員變量cliker;
2.在getView方法中得到兩個Button對象,并調用setTag方法把當前的position設置為tag,和setOnClickListener方法設置clicker對象為監聽器對象
Button itemButton1 = (Button) convertView.findViewById(R.id.itemButton1); itemButton1.setTag(position);itemButton1.setOnClickListener(cliker); Button itemButton2 = (Button) convertView.findViewById(R.id.itemButton2); itemButton2.setTag(position); itemButton2.setOnClickListener(cliker);
3.Activity類實現View.OnClickListener接口,并重寫onClick方法。把該Activity作為View.OnClickListener對象傳遞到MyListViewAdapter類中的clicker對象。在onClick中,通過v.getId()得到該控件的id,判斷是itemButton1還是itemButton2,通過v.getTag()得到控件的tag,判斷是第幾個itemButton被點擊了。
@Override public void onClick(View v) { // TODO Auto-generated method stub switch (v.getId()) { case R.id.itemButton1: { Toast.makeText(this, "position為"+v.getTag()+"的itemButton1被點擊", Toast.LENGTH_SHORT).show(); break; } case R.id.itemButton2: { Toast.makeText(this, "position為"+v.getTag()+"的itemButton2被點擊", Toast.LENGTH_SHORT).show(); break; } default: break; } }
說明
ListView的使用和自定義適配器的使用請看http://www.yee4.com/blog/357.html和http://www.yee4.com/blog/360.html
</blockquote> 來自