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);
    }

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

时间: 2024-10-08 05:52:22

Android长按事件和点击事件问题处理,OnItemLongClickListener和OnItemClickListener的相关文章

vue中的长按事件和点击事件冲突

<div> <img src="/static/images/poi-marker-default.png" @touchstart.prevent="touchin()" @touchend.prevent="clickhandle()" > </div> data() { return { Loop:0 } }, methods: { touchin(index){ // 长按事件,按住后等待指定事件触发

[前端][自定义DOM事件]不使用setTimeout实现双击事件或n击事件

使用setTimeout实现双击事件 例如,这样: let div = document.getElementById("div"); doubleClick(div, function (event) { console.log('双击') }) function doubleClick(ele, fn) { // 省略参数合法性的判断 let event = new Event("doubleClick"); // 自定义双击事件(可以使用CustomEvent

JS如何将拖拉事件与点击事件分离?

帖子:http://bbs.csdn.net/topics/390785395?page=1#post-397369340 如何将拖拉事件跟点击事件分离? 需要做到:拖拉时不触动点击事件 <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title> js拖拽组件1 </title> <script type="text/javascript" src=&qu

HTML5 Canvas ( 事件交互, 点击事件为例 ) isPointInPath

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>canvas</title> <script type="text/javascript" src="../js/jQuery.js"></script> <style type="text/css">

JS怎样将拖拉事件与点击事件分离?

帖子:http://bbs.csdn.net/topics/390785395?page=1#post-397369340 怎样将拖拉事件跟点击事件分离? 须要做到:拖拉时不触动点击事件 <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title> js拖拽组件1 </title> <script type="text/javascript" src=&qu

HTML5 Canvas ( 事件交互, 点击事件为例 ) isPointInPath(转)

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>canvas</title> <script type="text/javascript" src="../js/jQuery.js"></script> <style type="text/css">

【转】Android - Button(按钮)的响应点击事件的4种写法

原文网址:http://www.yrom.net/blog/2011/12/12/android-4-onclicklistener-of-button/ Button控件setOnclickListener(View.OnClickListener listener)来接收一个点击事件的监听器 自定义一个点击事件监听器类让其实现View.OnClickListener的onClick(View v)方法 1 2 3 4 5 class MyOnClickListener implements

Android中Button四种点击事件实现方式

1.Xml添加监听属性,这里添加的doClick. 1 <Button 2 android:id="@+id/bt1" 3 android:layout_width="wrap_content" 4 android:layout_height="wrap_content" 5 android:onClick="doClick" 6 android:text="XML添加doClick" 7 andro

Android的按钮四种点击事件

本文记录一下按钮的四种点击事件 第一种 public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //------------第一种---------------------- Button