XML : RecyclerView onItemClickListener and View.onClickListener inside adapter

i'm developing a simple File Manager. This File Manager is inside a Fragment and, obviously, it use a RecyclerView to show folders and files. The layout that manage the row of list is composed by: 1 ImageView, 1 TextView (to show folder/file name) and one ImageView to select options (such as: rename, delete, etc.).

To manage click on RecyclerView i implemented a custom OnItemClickListener interface. The code is:

  public class OnRecyclerItemClickListener implements RecyclerView.OnItemTouchListener {          GestureDetector gestureDetector;      OnItemClickListener listener;        public interface OnItemClickListener {          public void onItemClick(View view, int position);      }        public OnRecyclerItemClickListener(Context context, OnItemClickListener listener) {         this.listener = listener;           gestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {             @Override             public boolean onSingleTapUp(MotionEvent e) {                 return true;              }          });      }        @Override      public boolean onInterceptTouchEvent(RecyclerView view, MotionEvent e) {          View childView = view.findChildViewUnder(e.getX(), e.getY());          if(childView != null && listener != null && gestureDetector.onTouchEvent(e)) {              ((OnItemClickListener) listener).onItemClick(childView, view.getChildAdapterPosition(childView));          }            return false;      }        @Override      public void onTouchEvent(RecyclerView view, MotionEvent motionEvent) {          // TODO Auto-generated method stub            }        @Override      public void onRequestDisallowInterceptTouchEvent(boolean arg0) {          // TODO Auto-generated method stub            }  }    

So, in the Fragment:

  recyclerView.addOnItemTouchListener(new OnRecyclerItemClickListener(activity, new OnRecyclerItemClickListener.OnItemClickListener() {      @Override      public void onItemClick(View view, int position) {          // TODO Auto-generated method stub                              }      }));    

All works fine but now i have a problem: to manage the options when the user click on ImageView don't work properly because the RecyclerView.OnItemClickListener win on imageView.setOnClickListener. When the user click on the ImageView a PopupMenu is showed BUT always disappear because occur simultaneously RecyclerView.OnItemClickListener AND ImageView.OnClickListener. The first win to the second. How can i solve this?

No comments:

Post a Comment