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

来源:互联网 发布:行业数据哪里找 编辑:程序博客网 时间:2024/04/30 15:34

      在安卓开发中,相信很多安卓开发的朋友都会用到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"

0 0
原创粉丝点击