ListView的点击事件与子控件点击冲突的解决
来源:互联网 发布:ug4.0编程加工步骤 编辑:程序博客网 时间:2024/05/29 10:09
转发自:http://m.blog.csdn.net/article/details?id=52040100
面试的时候被问到这个问题,只能说见识短啊,没遇到过这个问题,回来赶紧搜了一下解决方案。
如果列表中有一个按钮,那么点击列表时,列表的点击事件将不会被触发,因为点击事件被Button点击事件屏蔽了,因此无法点击。
解决方法
在ItemLayout的根部局加上属性android:descendantFocusability= “blocksDescendants”
在需要点击的控件上如Button加上属性 android:focusable=”false”
这样就可以都触发点击事件了。但是这样的话Button的点击事件的处理是写在Adapter里面的,那如何写在Activity里面呢?使用接口回调可以实现。
- 在Adapter里面定义一个接口叫CallBack,接口的抽象方法为click(View view)
- 然后在getView方法里面对button的点击事件进行注册,并重写onClick方法,方法体为mCallBack.click(view),也就是说点击Button按钮时就去调用CallBack的click方法
- 在getView里面给button setTag,Tag值为position,这样可以记录button所在的具体位置
- 在Adapter的抽象方法里面加上CallBack参数,这样当listView设置adapter时就必须new CallBack,然后重写click方法。
这样就利用接口回调实现了在Adapter之外对Button的按钮点击事件处理的功能了
这可能就是传说中的回调吧!!!
Adapter代码
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
Activity代码
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
item_layout布局
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
如图
0 0
- ListView的点击事件与子控件点击冲突的解决
- ListView的点击事件与子控件点击冲突的解决
- Android:ListView的点击事件与子控件点击冲突的解决
- Android中解决listview的item点击事件和子控件点击事件的冲突
- 解决ListView中Item的子控件与Item点击事件冲突
- 解决ListView中Item的子控件(比如Button)与Item点击事件冲突
- 解决ListView中Item的子控件与Item点击事件冲突
- listview或gridview中item的点击事件与控件点击事件冲突的解决
- 解决Listview的item和里面控件点击事件冲突
- Android ViewPager与子控件点击事件冲突的解决方案
- ListView中控件点击事件与Item点击事件冲突的问题
- 关于ListView中控件点击事件与Item点击事件冲突的问题
- 关于ListView中控件点击事件与Item点击事件冲突的问题
- 关于ListView中控件点击事件与Item点击事件冲突的问题
- ListView中Item的子控件与Item点击事件冲的解决方式
- ListView中的Item点击事件和子控件的冲突或者item点击没有反应的解决办法
- listview item点击和子控件的冲突
- 解决ListView的Item包含Button的点击冲突事件
- viewPager+fragment实现分页切换,跳转至别的页面改变数据,fragment没有改变
- Mysql----查看数据库,表占用磁盘大小
- 【Natural Language Processing】社区问答系统中的comment分类
- Centos Linux Anaconda Python Pip安装、启动和环境配置
- FCN全卷积网络上采样理解
- ListView的点击事件与子控件点击冲突的解决
- 内存的构造和变量占用的字节数
- 解决MYSQL的错误:Got a packet bigger than 'max_allowed_packet' bytes
- BZOJ 5049. 【GDOI2017模拟一试4.11】腐女的生日
- Java实例-输入年月日完成以下判断
- Proud Merchants HDU
- 怎样才能将刘徽割圆术动画演示
- (原创)详解共享参数存储
- php 替代被弃用函数的