在swipable列表视图中具有onClickListener的视图不能再刷卡,但仅响应onClick事件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在swipable列表视图中具有onClickListener的视图不能再刷卡,但仅响应onClick事件相关的知识,希望对你有一定的参考价值。

我在这个url之后实现了一个可跳过的listview:https://jayrambhia.com/blog/swipe-listview,唯一的区别是我只有MotionEvent.ACTION_DOWN和MotionEvent.ACTION_UP,并根据deltaX值检测MotionEvent.ACTION_UP中的移动。列表项的自定义视图包含在Linearlayout中的这样的布局:

TextView1 | TextView2 TextView3

在滑动之前,它看起来像:

enter image description here

最初隐藏TextView2和3,当滑动此视图时,它们将显示为:

enter image description here

我为所有3个TextView设置了onClickListener,发现onClickListener设置为TextView1,如果从TextView1开始我无法滑动,并且仍然可以在TextView1之外滑动,因为TextView2和3最初是隐藏的。看起来TextView1只响应OnClickLisener。

我也试过为TextView1调用这些:

setClickable(true);
setEnabled(true);
setFocusable(true);
setFocusableInTouchMode(true);

我错过了什么?任何提示将不胜感激。提前致谢!

Editted:

我注意到如果我把手指放在TextView1和它的父线性布局之间,那么,滑动就可以了。因为子视图的onClickListener,看起来子视图(TextView1)禁用了它的父视图(Linearlayout)onTouchListener?在子视图中滑动开始时如何获取onTouchEvent?

答案

我根据我的情况发布了答案。请检查此URL以获取实现swipable listview的代码:https://jayrambhia.com/blog/swipe-listview

在我的代码中,我将触摸侦听器附加到listview项的布局视图(convertView):

convertView.setOnTouchListener(new SwipeDetector(viewHolder, position, data, mContext));

我还将相同的触摸侦听器附加到此convertView的视图持有者的“TextView1”:(这使得在“TextView1”上滑动工作。)

TextView1.setOnTouchListener(new SwipeDetector(this, position, data, act));

哪里

data - a java class holding the information for each list item;
position - a index of the list item
act / mContext - the activity instance
viewHolder - View holder class defined in the adapter
this - the Viewholder

以上是关于在swipable列表视图中具有onClickListener的视图不能再刷卡,但仅响应onClick事件的主要内容,如果未能解决你的问题,请参考以下文章

OnClick 事件与列表视图项目重复

onclick 按钮在列表视图中不起作用

Android Studio:如何将列表视图中的项目添加到列表视图 onClick

onClick 事件不适用于 android 中的嵌套列表视图项控件

从按钮 OnClick 方法中访问 listview/arrayadapter

java 列表视图evento onchange onclick