我有一个ListView,用户可以在其中滑动和关闭项目。为了实现滑动消除,我在列表视图中设置了一个触摸侦听器。
我也希望处理列表视图中每个项目的点击次数。但是,如果我为项目设置了一个点击监听器,则滑动解除不起作用。这应该是由于处理触摸事件的每个项目而不是将它们传递给变换器ListView。
有人可以提出一种方法,我可以拦截商品上的点击事件,而不会中断刷卡解雇吗?
答案 0 :(得分:1)
GestureDetector通过OnTouchListener附加到ListView,OnClickListener设置在各个列表项上 - 这是ListView的子视图
这里的问题是Listview和所有ViewGroup如何处理触摸顺序。
ViewGroup将触摸事件传递给其子视图,然后通过itseld直接处理它,当且仅当没有子视图消耗该事件时。具有OnClickListener的子视图将始终使用触摸事件,因此您的GestureDetector将不会看到任何事件。
最简单,最快速的解决方案,它使用一个单独的GestureDector来全部冲洗(LOTR粉丝会得到笑话)并处理滑动和点击。并将listview中的每个项目设置为使用者而不是listview本身。
查看here以获取其他有效解决方案
答案 1 :(得分:0)
如果用户未达到特定的移动阈值,您可以在ACTION_UP上使用listView.performClick()
。