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

