1

当我单击我的列表视图项目时,它会调用 onitemclick 侦听器,但是当我单击长项目时,它会同时调用 initemclick 和 onitemlongclick 侦听器。如何解决长按时只调用 onitemlongclick 监听器?

     list.setOnItemClickListener(new OnItemClickListener()
           {

            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                    long arg3) {
                //my code

            }


           });
        list.setOnItemLongClickListener(new OnItemLongClickListener() {

            public boolean onItemLongClick(AdapterView<?> arg0, View arg1,int arg2, long arg3) {
//my code
    }
    }
4

4 回答 4

2

请注意,onItemLongClick() 有一个布尔返回值。如果您不想调用 onItemClick,请让 onItemLongClick() 返回 true。

    list.setOnItemLongClickListener(new OnItemLongClickListener() {

        public boolean onItemLongClick(AdapterView<?> arg0, View arg1,int arg2, long arg3) {
           //....

           // Above are your code.
           // Return true for this method as below.
           return true;
        }
    }
于 2012-11-29T06:59:28.637 回答
0

在这种情况下,最好将 onClickListener() 用于列表的各个视图而不是列表。也适用于视图的 onItemLongClickListener()。

于 2012-11-29T07:01:42.173 回答
0

尝试像这样使用 return ...

list.setOnItemClickListener(new OnItemClickListener() {

        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) {



        }


       });
    list.setOnItemLongClickListener(new OnItemLongClickListener() {

        public boolean onItemLongClick(AdapterView<?> arg0, View arg1,int arg2, long arg3) {
    return true;
}
}
于 2012-11-29T07:14:23.577 回答
0

你只需要返回 false 来告诉系统它不应该再传递事件。

  list.setOnItemLongClickListener(new OnItemLongClickListener() {

         public boolean onItemLongClick(AdapterView<?> arg0, View arg1,int arg2, long arg3) {
              //Do something
              return false;
        }
于 2012-11-29T07:21:42.633 回答