关于onItemClick和onItemLongClick同时执行的一般性解决方法



关于onItemClick和onItemLongClick同时执行的一般性解决方法

   在安卓开发中,相信很多安卓开发的朋友都会用到ListView控件,但是在使用ListView控件的时候,会遇到这样的一些问题:当Listview的某一行有button存在时,无法弹出contextMenu;onItemClick和onItemLongClick同时执行(也就是onItemClick和onItemLongClick事件同时触发)的等问题,下面看一些关于ListView的常见问题。

    (1)ListView.setOnItemClickListener设置的listener一般在当点击某行内容是会被调用,但是如果这行内容中包含Button,ImgButton等控件时就不会被调用

    (2)ListView.setOnItemLongClickListener设置的listener一般在当长按某一行时会被调用,而且在抬起之前就已经调用了。

    (3)onItemLongClick的调用后是否还会调用onItemClick,这个要根据onItemLongClick的返回值来决定,下面做已详细解释:

lv.setOnItemClickListener(new OnItemLongClickListener() {   
           public boolean onItemClick(AdapterView<?> parent, View view, int position, long id) {   
               System.out.println("ITEM LONG CLICKED >> POSITION : " + position);   
               return false;   
           }   
       }); 


lv.setOnItemLongClickListener(new OnItemLongClickListener() {
  public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
           System.out.println("ITEM LONG CLICKED >> POSITION : " + position);
           return false/true;
  }
 });

    说明:看上面两段代码,如果onItemLongClick返回false那么onItemClick仍然会被调用。而且是先调用onItemLongClick,然后调用onItemClick,如果返回true那么onItemClick就不会再被调用了。

    (4)onItemClick以及onItemLongClick对弹出菜单的影响:onItemClick不影响弹出菜单;onItemLongClick如果返回true那么菜单不能弹出,只有在onItemLongClick如果返回false的时候才会弹出菜单。

    (5)让包含button的item也能弹出菜单,回调onItemClick以及onItemLongClick的监听器,需要设置Button属性:

         Android:focusable="false"  
         android:focusable="false"
         android:longClickable="true"  
         android:longClickable="true"

关于onItemClick和onItemLongClick同时执行的一般性解决方法

   在安卓开发中,相信很多安卓开发的朋友都会用到ListView控件,但是在使用ListView控件的时候,会遇到这样的一些问题:当Listview的某一行有button存在时,无法弹出contextMenu;onItemClick和onItemLongClick同时执行(也就是onItemClick和onItemLongClick事件同时触发)的等问题,下面看一些关于ListView的常见问题。

    (1)ListView.setOnItemClickListener设置的listener一般在当点击某行内容是会被调用,但是如果这行内容中包含Button,ImgButton等控件时就不会被调用

    (2)ListView.setOnItemLongClickListener设置的listener一般在当长按某一行时会被调用,而且在抬起之前就已经调用了。

    (3)onItemLongClick的调用后是否还会调用onItemClick,这个要根据onItemLongClick的返回值来决定,下面做已详细解释:

lv.setOnItemClickListener(new OnItemLongClickListener() {   
           public boolean onItemClick(AdapterView<?> parent, View view, int position, long id) {   
               System.out.println("ITEM LONG CLICKED >> POSITION : " + position);   
               return false;   
           }   
       }); 


lv.setOnItemLongClickListener(new OnItemLongClickListener() {
  public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
           System.out.println("ITEM LONG CLICKED >> POSITION : " + position);
           return false/true;
  }
 });

    说明:看上面两段代码,如果onItemLongClick返回false那么onItemClick仍然会被调用。而且是先调用onItemLongClick,然后调用onItemClick,如果返回true那么onItemClick就不会再被调用了。

    (4)onItemClick以及onItemLongClick对弹出菜单的影响:onItemClick不影响弹出菜单;onItemLongClick如果返回true那么菜单不能弹出,只有在onItemLongClick如果返回false的时候才会弹出菜单。

    (5)让包含button的item也能弹出菜单,回调onItemClick以及onItemLongClick的监听器,需要设置Button属性:

         Android:focusable="false"  
         android:focusable="false"
         android:longClickable="true"  
         android:longClickable="true"

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值