android 处理 onLongClickLisener, 长按和短按都被响应了解决办法

文章出处:http://blog.sina.com.cn/s/blog_4e1e357d0102uwhe.html

publicabstract boolean onItemLongClick (AdapterView parent, View view,int position, long id)

 

  当按下视图中的项目并保持按下状态(长按)时执行的回调函数。实现时如果需要访问与选中条目关联的数据,可以调用 getItemAtPosition(position)。
  参数
  parent发生点击事件的 AbsListView。
  view   AbsListView中被点击的视图。
  position   视图在一览中的位置(索引)。
  id 被点击条目的行ID。
  返回值
  如果回调函数处理了长按事件,返回真;否则返回假。



      muview.setOnItemLongClickListener(new OnItemLongClickListener(){

   @Override
    publicboolean onItemLongClick(AdapterView arg0, View arg1,
    intarg2, long arg3) {
    // TODOAuto-generated method stub
   Log.e("setOnItemLongClickListener","setOnItemLongClickListener");
    returntrue;
   }
       

       });
      muview.setOnItemClickListener(newOnItemClickListener(){

@Override
public voidonItemClick(AdapterView arg0, View arg1, int arg2,
long arg3){
Log.e("setOnItemClickListener","setOnItemClickListener");
}
      
       });

可以看到系统是优先相应clicklisener的,他是没有返回值的。
而对于onLongClickLisener是有一个返回值标识。对于一次长按操作,如果返回false,则2个lisener都会相应,如果返回true则时间被longClick链式拦截,后面的【clickLisener处于后面的位置】的注册的lisener将不再向上回调;
在处理长按时,注意的细节是把onItemLongClick返回设置为true,否则长按是会执行setOnItemClickListener



之前对长按操作处理有误,返回了false;
正确应该 回调系统return true; 
NOTE:如果回调函数处理了长按事件,返回真;否则返回假

还有一点需要说的是:要将长按写在单击前面,我也是去尝试发现的

猜你喜欢

转载自blog.csdn.net/qq_36125733/article/details/78328379