Android 中ListView的Item點擊事件失效的快速解決方法
在平常的開發(fā)過程中,我們的ListView可能不只是簡單的顯示下文本或者按鈕,更多的是顯示復(fù)雜的布局,這樣的話,我們就得自己寫布局和自定義adapter了,一般是繼承于BaseAdapter,示例代碼見下方。寫ListView的點擊事件時OnItemClickListener,onItemClick方法沒有執(zhí)行,導(dǎo)致ListView中Item條目點擊事件失效,而Item中的View點擊事件可以在getView方法中進(jìn)行處理。導(dǎo)致整個Item點擊失效的原因多半是由于在【你自己定義的Item中存在諸如ImageButton,Button,CheckBox等子控件(也可以說是Button或者Checkable的子類控件)】,此時這些子控件會將焦點獲取到,所以常常當(dāng)點擊item時變化的是子控件,item本身的點擊沒有響應(yīng)。
這時候就可以使用descendantFocusability來解決,其中descendantFocusability對應(yīng)的屬性有3個
該屬性是當(dāng)一個為view獲取焦點時,定義viewGroup和其子控件兩者之間的關(guān)系。
屬性的值有三種:
beforeDescendants:viewgroup會優(yōu)先其子類控件而獲取到焦點
afterDescendants:viewgroup只有當(dāng)其子類控件不需要獲取焦點時才獲取焦點
blocksDescendants:viewgroup會覆蓋子類控件而直接獲得焦點
通常我們用到的是第三種,即在Item布局的根布局加上android:descendantFocusability=”blocksDescendants”的屬性就好了
我遇到的情況時item布局有一個ImageButton按鈕,因為這個組件搶事件能力強(qiáng),根button差不多;因此運(yùn)行后,listviewitem點擊失效。使用上邊方式解決問題;當(dāng)然也可以改變imagebutton為imageview也可以解決這個問題。
相關(guān)文章
Adnroid 自定義ProgressDialog加載中(加載圈)
這篇文章主要介紹了Adnroid 自定義ProgressDialog加載中(加載圈),需要的朋友可以參考下2017-06-06
淺談Android Studio 4.1 更新內(nèi)容
這篇文章主要介紹了淺談Android Studio 4.1 更新內(nèi)容,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10
解決android studio 打包發(fā)現(xiàn)generate signed apk 消失不見問題
這篇文章主要介紹了解決android studio 打包發(fā)現(xiàn)generate signed apk 消失不見問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09
Android編程實現(xiàn)文件瀏覽功能的方法【類似于FileDialog的功能】
這篇文章主要介紹了Android編程實現(xiàn)文件瀏覽功能的方法,可實現(xiàn)類似于FileDialog的功能,涉及Android針對文件與目錄操作的相關(guān)技巧,需要的朋友可以參考下2016-11-11
Android?如何獲取傳感器的數(shù)據(jù)方法詳解
這篇文章主要介紹了Android?如何獲取傳感器的數(shù)據(jù),傳感器?Sensor?是一種檢測裝置,能感受到被測量的信息,并能將感受到的信息,按一定規(guī)律變換成為電信號或其他所需形式的信息輸出,以滿足信息的傳輸、處理、存儲、顯示、記錄和控制等要求2022-07-07

