2010-08-31 73 views
10

我有一個ListView與它的一些元素。每行都有一個TextView和一個Button。它看起來像這樣:TextView和按鈕在每一行和onListItemClick()

|連續的一些文本(Button)|

現在,當我點擊這個文本時沒有任何反應。根本不需要調用任何函數。但是當我點擊按鈕時,我可以處理事件。我使用onListItemClick()

那麼我應該用什麼來代替這個TextView來處理一個事件(當我點擊文本時)?

在此之前,我每行只有一個TextView,當我點擊一行時,一切正常(onListItemClick()被調用)。

預先感謝您!

回答

9

財產focusable="false"添加到您的TextView ::

<TextView 
... 
... 
     android:focusable="false" 
     /> 

,也許你會需要做同樣的你的ListView裏面的其他元素。

+1

謝謝,它的工作原理。 – 2010-08-31 18:49:31

+1

雖然這工作正常,但您應該考慮實施以下解決方案,因爲這將使d-pad/trackball導航行爲正確:http://stackoverflow.com/questions/3789943/using-android-how-can-i-select -row-a-listview-which-contain-button-contro/3791340#3791340 – sven 2010-10-17 11:51:38

+1

這將適用於textview,但對於imagebutton,也許你需要,放在代碼'v.findViewById(R.id.my_btn)。 setFocusable(false);'在Adapter getView中。 – 2013-02-21 19:59:48

6

挑戰是ListView和按鈕爭奪焦點。通常,兩者中只有一個可以獲得焦點(並因此被點擊)。在你的原因中,該按鈕是可以調焦的按鈕。

要調整此設置,您可以使用ListView的descendantFocusability屬性進行播放。

你想通過ListView項目中的按鈕來實現什麼?當你點擊按鈕時,你是否希望發生不同的事情,而當你點擊按鈕外的列表視圖項時?

+1

是的,正如你所說我想要按鈕來完成不同的任務。謝謝你解釋。 – 2010-08-31 18:49:11

+1

但我仍然有一些問題。就像你說的,當我點擊按鈕vs當我點擊按鈕外的ListView時,我想做不同的事情。 onListItemClick()僅在單擊列表上的某處而不是按鈕時調用。我想我會從onListItemClick()中獲取參數「v」的按鈕視圖。那麼,你會建議我這樣做,以便我可以處理點擊特定按鈕的事件? – 2010-08-31 19:43:18

+1

這個傢伙:http://stackoverflow.com/questions/2679948/focusable-edittext-inside-listview有一個類似的問題,可能適用的解決方案...請記住,雖然,人們嘗試點擊小按鈕。通常,人們希望能夠點擊ListView行的任何地方,因爲這是大多數應用程序的工作原理。您可能想要重新考慮您的用戶界面,以避免嵌套可點擊區域。 – 2010-08-31 20:13:47

相關問題