Я пытаюсь использовать onClickListener для кнопки внутри моей строки RecyclerView, и у меня также есть прослушиватель кликов для моей строки RecyclerView, теперь проблема в том, что я нажимаю кнопку на строке RecyclerView, это также уволил прослушиватель кликов строки RecyclerView, кстати здесь я использую фрагмент.Handle Button click Listener в RecyclerView
Это пользовательский класс для RecyclerView touchListener
public 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) {
}
@Override
public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
}
public static interface ClickListener {
void onClick(View view, int position);
void onLongClick(View view, int position);
}
}
это ViewHolder для кнопок
public static class RecycleViewHolder extends RecyclerView.ViewHolder{
ImageButton BTN_B, BTN_A, BTN_C;
public RecycleViewHolder(View view){
super(view);
ItemImage = (ImageView) view.findViewById(R.id.item_item_image);
BTN_A = (ImageButton) view.findViewById(R.id.button_a);
BTN_B = (ImageButton) view.findViewById(R.id.button_b);
BTN_C = (ImageButton) view.findViewById(R.id.button_c);
BTN_B.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(CTX,"B Button Clicked"+getAdapterPosition(),Toast.LENGTH_SHORT).show();
}
});
BTN_A.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(CTX,"A Button Clicked"+getAdapterPosition(),Toast.LENGTH_SHORT).show();
}
});
BTN_C.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(CTX,"C Button Clicked"+getAdapterPosition(),Toast.LENGTH_SHORT).show();
}
});
}
}