今天做項目時,listview中含有了button元件,心裡一早就知道肯定會有沖突,因為以前就遇到過,并解決過,可惜當時沒有記錄下來。 今天在做的時候,繼續被這個問題郁悶了一把,後來解決後,趕緊來記錄下,以便日後參考。
首先,其實listview中button按鈕點選事件沖突這種問題壓根就不是太大的問題,因為我們完全可以将一個textview的backgroud設定成一個selector,也可以将一個textview設計成一個按鈕的樣子,這樣就可以繞過listview和button的沖突問題!
當然,如果非要使用button,那可以利用以下方案解決。
首先,要了解的是,listview和其它能觸發點選事件的widget無法一起正常工作的原因是加入其它widget後,listview的itemclick事件被其它widget的click事件屏蔽,是以将無法觸發。
如何做呢?
定義list_item_btn.xml:
注; button的android:focusable必須設定為false,以免它搶了父控件(也就是每一個item)的焦點。
接下來,我們定義一個bean,plan.java:
實作listview的adapter,myadapter.java:
注:
1. 構造方法中,我們傳入了onclicklistener,主要是為了讓每一個item的button監聽該事件.
2. holder.btn.setonclicklistener(this.onclicklistener); 為button設定點選事件監聽。
3. 為button設定tag,tag的值為position,這樣可以友善擷取該button所在的list中的位置。
最後,設定清單及事件監聽: