码迷,mamicode.com
首页 > 移动开发 > 详细

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

时间:2015-08-07 14:46:55      阅读:234      评论:0      收藏:0      [点我收藏+]

标签:android   listview   长按监听   

        今天在做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

标签:android   listview   长按监听   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!