gridView的事件冲突

最近在做项目时,遇到一个要求, 长按gridView的Item,和点击Item事件。

点击长按onItemLongClickListener时,可删除GridView的Item

点击某个Item时执行OnItemClickListener事件。

2个同时存在时,会发现,点击长按事件后,它会执行点击某个Item事件。

 gridView.setOnItemClickListener(itemListener);
  gridView.setOnItemLongClickListener(itemLongListener);



解决的办法是: 让它返回true, [如果默认返回是false,是会执行OnItemClickListener事件的。]

      private OnItemLongClickListener itemLongListener = new OnItemLongClickListener() {


        @Override
        public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
            showDeleteDialog(position);
            return true;
        }
    };


总结:

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


这样就解决了点击时的冲突问题了,记录下来方便自己和他人看吧。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值