Ich verwende den folgenden Code für die Behandlung von Zeilenklicks. ( Quelle )
static class RecyclerTouchListener implements RecyclerView.OnItemTouchListener {
private GestureDetector gestureDetector;
private ClickListener clickListener;
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.getChildPosition(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.getChildPosition(child));
}
return false;
}
@Override
public void onTouchEvent(RecyclerView rv, MotionEvent e) {
}
}
Dies funktioniert jedoch, wenn ich in jeder Zeile eine Schaltfläche zum Löschen sagen möchte. Ich bin mir nicht sicher, wie ich das damit umsetzen soll.
Ich habe den OnClick-Listener an die Schaltfläche zum Löschen angehängt, die funktioniert (löscht die Zeile), aber auch den Onclick für die gesamte Zeile auslöst.
Kann mir jemand helfen, wie ich das Klicken in ganzen Zeilen vermeiden kann, wenn auf eine einzelne Schaltfläche geklickt wird?
Vielen Dank.