【发布时间】:2016-06-30 12:00:49
【问题描述】:
我有带有 OnItemTouchListener 的回收器视图,并且此回收器的每一行都有一个带有 onclick 事件的按钮。
我希望在单击按钮事件后工作,但 OnItemTouchListener 工作。
请帮忙。我的代码。
public class RecyclerViewTouchListener implements RecyclerView.OnItemTouchListener {
private GestureDetector gestureDetector;
private ClickListener clickListener;
public RecyclerViewTouchListener(Context context, final RecyclerView recyclerView, final ClickListener clickListener) {
this.clickListener=clickListener;
gestureDetector=new GestureDetector(new GestureDetector.SimpleOnGestureListener(){
@SuppressWarnings("deprecation")
@Override
public boolean onSingleTapUp(MotionEvent e) {
View child = recyclerView.findChildViewUnder(e.getX(), e.getY());
if (child!=null && clickListener!=null){
clickListener.OnClick(child,recyclerView.getChildPosition(child));
}
return true;
}
});
}
@Override
public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
View child = rv.findChildViewUnder(e.getX(), e.getY());
if (child != null && clickListener != null && gestureDetector.onTouchEvent(e)) {
//noinspection deprecation
clickListener.OnClick(child, rv.getChildPosition(child));
}
return false;
}
@Override
public void onTouchEvent(RecyclerView rv, MotionEvent e) {
}
@Override
public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
}
public static interface ClickListener {
void OnClick(View view,int position);
}
}
viewholder 中的这段代码
deleteButton.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
callbacks.removePosition(getAdapterPosition());
}
});
【问题讨论】:
-
我希望在单击按钮事件后工作,但 OnItemTouchListener 工作。 什么?
-
您的问题到底是什么?我不知道它是什么。
-
@TimCastelijns 对不起。我想在点击按钮后,点击方法运行。但 onclick 方法按钮不起作用,只有 onItemTouchListener 运行。
-
从
onInterceptTouchEvent返回true而不是false..!!
标签: android button android-recyclerview