您必须
GestureDetectorCompat在
onCreateView()方法中进行初始化:
@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.myfrag, container, false); detector = new GestureDetectorCompat(getActivity(), new RecyclerViewonGestureListener()); recyclerView = (RecyclerView) rootView.findViewById(R.id.recyclerview); layoutManager = new LinearLayoutManager(getActivity()); recyclerView.setLayoutManager(layoutManager); recyclerView.addonItemTouchListener(this); adapter = new MyAdapter(myData)); recyclerView.setAdapter(adapter); return rootView;}RecyclerViewOnGestureListener是您自己的内部类扩展
SimpleOnGestureListener(提供
OnGestureListener方法的空实现)
private class RecyclerViewonGestureListener extends SimpleonGestureListener { @Override public boolean onSingleTap/confirm/ied(MotionEvent e) { View view = recyclerView.findChildViewUnder(e.getX(), e.getY()); int position = recyclerView.getChildPosition(view); // handle single tap return super.onSingleTap/confirm/ied(e); } public void onLongPress(MotionEvent e) { View view = recyclerView.findChildViewUnder(e.getX(), e.getY()); int position = recyclerView.getChildPosition(view); // handle long press super.onLongPress(e); }}现在看一行(来自
onCreateView()方法):
recyclerView.addonItemTouchListener(this);
在我们的例子中,“ this”
OnItemTouchListener包含两个我们需要实现的方法:
@Overridepublic boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) { detector.onTouchEvent(e); return false;}@Overridepublic void onTouchEvent(RecyclerView rv, MotionEvent e) {}这是这些方法的含义的解释:https
:
//developer.android.com/reference/android/support/v7/widget/RecyclerView.OnItemTouchListener.html
您只需要处理来自的单击和长按事件即可
RecyclerView。



