Android 中ListView的Item点击事件失效的快速解决方法
在平常的开发过程中,我们的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也可以解决这个问题。
推荐阅读
-
Android 中ListView的Item点击事件失效的快速解决方法
-
Android中Listview点击item不变颜色及设置listselector 无效的解决方案
-
Android中Listview点击item不变颜色及设置listselector 无效的解决方案
-
android中在Activity中响应ListView内部按钮的点击事件的两种方法
-
android中在Activity中响应ListView内部按钮的点击事件的两种方法
-
Android 中ListView点击Item无响应问题的解决办法
-
Android 中ListView点击Item无响应问题的解决办法
-
Android 中RecycleView实现item的点击事件
-
Android中ListView的item点击没有反应的解决方法
-
Android 中RecycleView实现item的点击事件