android listview上下滑动时为啥不触发点击事件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android listview上下滑动时为啥不触发点击事件相关的知识,希望对你有一定的参考价值。

listview.setOnItemClickListener()方法已经重写,但是在滑动时,不会触发这个方法?为什么?滑动时也是点点击了单个条目的?

所谓点击需要有一个按下和抬起的动作,如果区分短按和长按,则以抬起时相对于按下时的时间来区分。
同样的,滑动时,移动先于抬起,此时就不再触发点击事件了。追问

也就是说,滑动的监听先于点击事件监听被捕捉到!对吧,明白了!

追答

嗯。

参考技术A setOnItemClickListener() 触发的机制是, 手指点击时会产生触屏事件的 ACTION_DOWN, 这会根据xy坐标判断是哪个Item被点击, 手指提起时会触发ACTION_UP事件, 这样才是真正完成了整个点击的过程,从触发了setOnItemClickListener事件 ; 如果 你点击之后移动了 会触发ACTION_MOVE事件,当手指移动超过一定距离再提起时,就不会再触发setOnItemClickListener 事件。 希望能帮到你。 参考技术B listView.setOnScrollListener(this);
private ListAdapter adapter = new ListAdapter();
listView.setAdapter(adapter);
class ListAdapter extends BaseAdapter
@Override
public View getView(int position, View convertView, ViewGroup parent)
return convertView;



listView.setOnItemClickListener(new MyListItemClickListener());
class MyListItemClickListener implements OnItemClickListener
@Override
public void onItemClick(AdapterView<?> arg0, View view, int arg2,
long arg3)


看到以上代码,你理解了吗???
这些监听里面,拖动是第一位的。然后,点击是第二位的。点击和拖动是有根本区别的。
楼上 “gaogaf | 六级 ” 说的很有道理。

以上是关于android listview上下滑动时为啥不触发点击事件的主要内容,如果未能解决你的问题,请参考以下文章

android listview为啥不能滑动

android中listview如何支持上下滑动,左右滑动且左右滑动时可以指定固定列数

android中上下滑动listview,顶端和底端布局可以隐藏和显示

Android--判断listview上下滑动的方法

Android 解决之NestedScrollView嵌套ListView后不能上下滑动的问题

ListVIew中包含水平滑动控件,左右滑动时容易触发上下滑动