我正在使用RecyclerView以自定义布局显示这些CardView。我想要做的是检测用户点击播放按钮的时间,以及他们点击CardView的时间。目前我正在使用RecyclerView.OnItemTouchListener,但它似乎无法产生我需要的所有事件(播放按钮点击。)
public class RecyclerTouchListener implements RecyclerView.OnItemTouchListener {
private GestureDetector gestureDetector;
private ClickListener clickListener;
public interface ClickListener {
void onClick(View view, int position);
void onLongClick(View view, int position);
}
public RecyclerTouchListener(Context context, final RecyclerView recyclerView, final ClickListener clickListener) {
this.clickListener = clickListener;
gestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
@Override
public boolean onSingleTapUp(MotionEvent e) {
return true;
}
@Override
public void onLongPress(MotionEvent e) {
View child = recyclerView.findChildViewUnder(e.getX(), e.getY());
if (child != null && clickListener != null) {
clickListener.onLongClick(child, recyclerView.getChildAdapterPosition(child));
}
}
});
}
@Override
public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
View child = rv.findChildViewUnder(e.getX(), e.getY());
if (child != null && clickListener != null && gestureDetector.onTouchEvent(e)) {
clickListener.onClick(child, rv.getChildAdapterPosition(child));
}
return false;
}
@Override
public void onTouchEvent(RecyclerView rv, MotionEvent e) {
}
@Override
public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
}
}
这段代码只告诉我,当点击CardView时,我也希望点击播放按钮。我应该在我的适配器类中设置onClick侦听器,即使这看起来像是一种不好的做法吗?
感谢您的时间。
答案 0 :(得分:0)
我不确定这一点(因为我正在做相反的事情,点击儿童点击父母),但是
android:clickable="false"
android:focusable="false"
可以帮到你:将你的根视图设置为不可点击/可聚焦,然后在你的按钮上添加一个点击监听器,没有任何拦截。
希望这有帮助。
答案 1 :(得分:0)
我希望能找到适合RecyclerView.OnItemTouchListener的东西,因为它似乎是实现这一目标的正确方法。最后,我认为最好的方法是在RecyclerView的适配器类中设置onClick侦听器(这就是我要做的。)
感谢您提供帮助。
这是一位评论员建议的帖子,作为我计划做的事情的替代。