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