OnItemClickListener不响应

简介:

根原因:listview(或其他有adapter的view)没有获得焦点


列子:

   <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"//误点一:fill_parent
   android:orientation="vertical"

   android:descendantFocusability="blocksDescendants" //误点二

   >


正确应该是

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:orientation="vertical"
   >


切记:

adapter的xml的主layout(RelativeLayout)不能用fill_parent


原因有二。

一:

 原因:在adapter的xml中设置了 android:descendantFocusability="blocksDescendants" 

注释下面的item就是ListView的item

   android:beforeFocusability      viewgroup在子项处理之前获得焦点

   android:afterFocusability            viewGroup在子项处理之后获得焦点

   android:blocksFocusability          viewGroup阻止子项获得焦点(以此子项的子项就能获得焦点)


 二:在layout_......设置了fill_parent,


三 Android 长按setOnItemLongClickListener 注意细节

 原理是fill_parent原来就是要求本layout全屏,但listview(或其他有adapter的view)限制item的高宽。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
gridview.setOnItemLongClickListener( new  OnItemLongClickListener() {
                            
         @Override
         public  boolean onItemLongClick(AdapterView<?> arg0, View arg1,
                 int  arg2, long arg3) {
             // TODO Auto-generated method stub
             Log.e( "setOnItemLongClickListener" "setOnItemLongClickListener" );
             return  true ;
         }
                                     
                            
       });
      gridview.setOnItemClickListener( new  OnItemClickListener(){
                            
@Override
public  void  onItemClick(AdapterView<?> arg0, View arg1,  int  arg2,
         long arg3) {
     Log.e( "setOnItemClickListener" "setOnItemClickListener" );
}
                                    
      });


1.如果返回false那么onItemClick仍然会被调用。而且是先调用onItemLongClick,然后调用onItemClick。 如果返回true那么click就会被吃掉,onItemClick就不会再被调用了。

2.监听onItemClick以及onItemLongClick影响弹出菜单吗? onItemClick不影响;onItemLongClick如果返回true那么就会吃掉click事件,导致菜单不能弹出。

3.如何让包含button的item也能弹出菜单,回调onItemClick以及onItemLongClick的监听器呢? 需要设置Button属性:android:focusable="false"  android:focusable="false"android:longClickable="true"  android:longClickable="true"否则无法收到onItemLongClick



本文转自lilin9105 51CTO博客,原文链接:http://blog.51cto.com/7071976/1216753,如需转载请自行联系原作者

相关文章
|
3月前
|
缓存
响应状态码
响应状态码
22 1
|
5月前
GoWeb获取请求
GoWeb获取请求
30 1
|
9月前
|
JSON PHP 数据格式
响应 方式
响应 方式
|
前端开发
|
搜索推荐
重定向响应
什么是重定向响应
|
JSON 前端开发 数据格式
如何判断请求是否发送成功以及获取请求中的数据
如何判断请求是否发送成功以及获取请求中的数据
677 0
如何判断请求是否发送成功以及获取请求中的数据
|
存储 负载均衡 JavaScript
一个请求过来都经过了什么
我面试人家的时候特别喜欢问一个问题:”请描述一下一个请求过来到响应完成都做了什么,越详细越好。” 对于一个高手来说,他只要回答好了这一个问题,技术面试就通过了。所以如果我要去面试,我就把这个问题的答案压缩到40分钟到1个小时。因为一般的技术面试都是这个时间段哒,虽然我其实很想讲上两天。哎,一看我们部门就是做业务的。 为了让人家听懂,我一般会设置一个业务场景。比如说:现在用户要开始上传一个视频。那么业务上要经过用户打开浏览器页面,用户点击[选择视频文件]按钮,JS端调用系统本地文件选择器,JS端将视频信息写入到浏览器页面,用户点击[开始上传],此时开始发送请求。
一个请求过来都经过了什么
|
存储
无请求不响应?
无请求不响应?
89 0
无请求不响应?