首页 > 移动平台 > 详细

Android长按事件和点击事件问题处理,OnItemLongClickListener和OnItemClickListener

时间:2015-08-07 14:45:28      阅读:434      评论:0      收藏:0      [点我收藏+]

        今天在做demo时,需要设置ListView的item的长按和点击事件,OnItemLongClickListener和OnItemClickListener,然而点击事件可以实现,在长按时操作会同时触发点击事件,然后查看了一下Android的相关源码,可以看到系统是优先相应clicklisener的,他是没有返回值的的。而对于OnItemLongClickListener是有一个返回值标识。对于一次长按操作,如果返回false,则2个lisener都会相应,如果返回true则系统只处理长按事件。

        因此,想要自己的OnItemLongClickListener长按事件生效,需要将返回值设为true。

下面是源码

    /**
     * Interface definition for a callback to be invoked when an item in this
     * AdapterView has been clicked.
     */
    public interface OnItemClickListener {

        /**
         * Callback method to be invoked when an item in this AdapterView has
         * been clicked.
         * <p>
         * Implementers can call getItemAtPosition(position) if they need
         * to access the data associated with the selected item.
         *
         * @param parent The AdapterView where the click happened.
         * @param view The view within the AdapterView that was clicked (this
         *            will be a view provided by the adapter)
         * @param position The position of the view in the adapter.
         * @param id The row id of the item that was clicked.
         */
        void onItemClick(AdapterView<?> parent, View view, int position, long id);
    }


    /**
     * Interface definition for a callback to be invoked when an item in this
     * view has been clicked and held.
     */
    public interface OnItemLongClickListener {
        /**
         * Callback method to be invoked when an item in this view has been
         * clicked and held.
         *
         * Implementers can call getItemAtPosition(position) if they need to access
         * the data associated with the selected item.
         *
         * @param parent The AbsListView where the click happened
         * @param view The view within the AbsListView that was clicked
         * @param position The position of the view in the list
         * @param id The row id of the item that was clicked
         * 源码这里已经给出解释,如果返回值设为true,则系统消耗掉长按事件
         * @return true if the callback consumed the long click, false otherwise
         */
        boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id);
    }


版权声明:本文为博主原创文章,未经博主允许不得转载。

Android长按事件和点击事件问题处理,OnItemLongClickListener和OnItemClickListener

原文:http://blog.csdn.net/u012527802/article/details/47338263

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!