天天看點

Android Listview中Button按鈕點選事件沖突解決辦法

  今天做項目時,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中的位置。

最後,設定清單及事件監聽:

繼續閱讀