Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android ListView中Item點擊事件失效解決方案

Android ListView中Item點擊事件失效解決方案

編輯:關於Android編程

在平常的開發過程中,我們的ListView可能不只是簡單的顯示下文本或者按鈕,更多的是顯示復雜的布局,這樣的話,我們就得自己寫布局和自定義adapter了,一般是繼承於BaseAdapter,示例代碼見下方。寫ListView的點擊事件時OnItemClickListener,onItemClick方法沒有執行,導致ListView中Item條目點擊事件失效,而Item中的View點擊事件可以在getView方法中進行處理。導致整個Item點擊失效的原因多半是由於在【你自己定義的Item中存在諸如ImageButton,Button,CheckBox等子控件(也可以說是Button或者Checkable的子類控件)】,此時這些子控件會將焦點獲取到,所以常常當點擊item時變化的是子控件,item本身的點擊沒有響應。

這時候就可以使用descendantFocusability來解決,其中descendantFocusability對應的屬性有3個

該屬性是當一個為view獲取焦點時,定義viewGroup和其子控件兩者之間的關系。

屬性的值有三種:

beforeDescendants:viewgroup會優先其子類控件而獲取到焦點

afterDescendants:viewgroup只有當其子類控件不需要獲取焦點時才獲取焦點

blocksDescendants:viewgroup會覆蓋子類控件而直接獲得焦點

通常我們用到的是第三種,即在Item布局的根布局加上android:descendantFocusability=”blocksDescendants”的屬性就好了

我遇到的情況時item布局有一個ImageButton按鈕,因為這個組件搶事件能力強,根button差不多;因此運行後,listviewitem點擊失效。使用上邊方式解決問題;當然也可以改變imagebutton為imageview也可以解決這個問題。

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved