Android上ListView的OnItemDoubleClick实现

该博客介绍了如何在Android应用中为GridView实现双击事件响应。作者通过创建一个实现了OnItemClickListener接口的内部类,详细说明了在GridView上实现OnItemDoubleClick的步骤和代码示例。

最近工作中遇到一个给GridView响应双击事件的需求,参照在stackoverflow上查到的一些答案实现了个响应OnItemDoubleClick事件的OnItemClickListener,目前的实现方式就是定义一个实现了OnItemClickListener接口的内部类。下面是代码:

class CustomOnItemClickListener implements OnItemClickListener {

        private boolean nonDoubleClick = true;
        private long firstClickTime = 0L;
        private final int DOUBLE_CLICK_TIMEOUT = 180;//ViewConfiguration.getDoubleTapTimeout();

        @Override
        public void onItemClick(AdapterView<?> parent, View view, final int position, long id) {
            // @TODO check and catch the double click event
            synchronized(VibinOnItemClickListener.this) {
                if(firstClickTime == 0) {
                    firstClickTime = SystemClock.elapsedRealtime();
                    nonDoubleClick = true;
                } else {
                    long deltaTime = SystemClock.elapsedRealtime() - firstClickTime;
                    firstClickTime = 0;
                    if(deltaTime < DOUBLE_CLICK_TIMEOUT) {
                        nonDoubleClick = false;
                        this.onItemDoubleClick(parent, view, position, id);
                        return;
                    }
                }

                view.postDelayed(new Runnable() {

                    @Override
                    public void run() {
                        if(nonDoubleClick) {
                            // @TODO add your logic for single click event
                            firstClickTime = 0;
                        }
                    }

                }, DOUBLE_CLICK_TIMEOUT);
            }
        }

        public void onItemDoubleClick(AdapterView<?> parent, View view, int position, long id) {
            // @TODO override this method with your own logic
        }
    }

这个简单实现可以实用于大部分常用的AdapterView。记录一下,也希望能顺便帮到有需要的朋友。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值