您的位置:首页 > 其它

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

2013-12-28 16:22 232 查看
      在安卓开发中,相信很多安卓开发的朋友都会用到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"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐