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

本文详细解析了Android中视图长按事件的处理机制,包括onItemLongClick方法的使用及注意事项,阐述了如何通过正确设置返回值来区分长按与点击事件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章出处: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:如果回调函数处理了长按事件,返回真;否则返回假

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值