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


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


  • 相关阅读:
    10.1~10.15学习情况
    ACM-ICPC 2018 沈阳赛区网络预赛
    打卡4
    打卡3
    tab 简单的tab
    css 圆形动画
    pdf和图片之间的转换
    对list进行分组
    C# 打开所在文件夹
    读取xml文件
  • 原文地址:https://www.cnblogs.com/zsychanpin/p/6795709.html
Copyright © 2020-2023  润新知