日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[转]Listview的onItemClickListener无法响应的解决方法

發布時間:2024/9/5 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [转]Listview的onItemClickListener无法响应的解决方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在Android軟件設計與實現中我們通常都會使用到ListView這個控件,系統有一些預置的Adapter可以使用,例如SimpleAdapter和ArrayAdapter,但是總是會有一些情況我們需要通過自定義ListView來實現一些效果,那么在這個時候,我們通常會碰到自定義ListView無法選中整個ListViewItem的情況,也就是無法響應ListView的onItemClickListener中的onItemClick()方法,究竟是為什么呢?我之前也在網上查過不少的資料,但是沒有發現什么有價值的文章,有一些是建議在Adapter的getView方法中對自己需要響應單擊事件的控件進行設置。但是最終的效果并不是特別理想,而且我認為這是一種取巧的方式,并不推薦。之后自己查看了一下ViewGroup的源碼,發現了以下的一段常量聲明:

/**

* This view will get focus before any of its descendants.

*/

public static final int FOCUS_BEFORE_DESCENDANTS = 0×20000;

/**

* This view will get focus only if none of its descendants want it.

*/

public static final int FOCUS_AFTER_DESCENDANTS = 0×40000;

/**

* This view will block any of its descendants from getting focus, even

* if they are focusable.

*/

public static final int FOCUS_BLOCK_DESCENDANTS = 0×60000;

/**???? * This view will get focus before any of its descendants.???? */

public static final int FOCUS_BEFORE_DESCENDANTS = 0×20000;?
/**???? * This view will get focus only if none of its descendants want it.???? */

public static final int FOCUS_AFTER_DESCENDANTS = 0×40000;?
/**???? * This view will block any of its descendants from getting focus, even???? * if they are focusable.???? */

public static final int FOCUS_BLOCK_DESCENDANTS = 0×60000;

我們看到了一行代碼定義的變量的意思是“當前View將屏蔽他所有子控件的Focus狀態,即便這些子控件是可以Focus的”,其實這段話的意思就是這個變量代表著當前的View將不顧其子控件是否可以Focus自身接管了所有的Focus,通常默認能獲得focus的控件有Button,Checkable繼承來的所有控件,這就意味著如果你的自定義ListViewItem中有Button或者Checkable的子類控件的話,那么默認focus是交給了子控件,而ListView的Item能被選中的基礎是它能獲取Focus,也就是說我們可以通過將ListView中Item中包含的所有控件的focusable屬性設置為false,這樣的話ListView的Item自動獲得了Focus的權限,也就可以被選中了,也就會響應onItemClickListener中的onItemClick()方法,然而將ListView的Item Layout的子控件focusable屬性設置為false有點繁瑣,我們可以通過對Item Layout的根控件設置其android:descendantFocusability=”blocksDescendants”即可,這樣Item Layout就屏蔽了所有子控件獲取Focus的權限,不需要針對Item Layout中的每一個控件重新設置focusable屬性了,如此就可以順利的響應onItemClickListener中的onItemClick()方法了。

原文--http://www.7dot9.com/2010/09/android%E4%B8%AD%E8%87%AA%E5%AE%9A%E4%B9%89listview%E6%97%A0%E6%B3%95%E5%93%8D%E5%BA%94onitemclicklistener%E4%B8%AD%E7%9A%84onitemclick%E6%96%B9%E6%B3%95%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3%E6%96%B9/

轉載于:https://www.cnblogs.com/zenip/archive/2013/01/30/2883767.html

總結

以上是生活随笔為你收集整理的[转]Listview的onItemClickListener无法响应的解决方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。