2015-06-20 129 views
1

我是android新手。我一直使用片段来创建我的应用程序。 所以我从这个here复制材料样式抽屉。类必须声明为抽象或?

现在我在这部分代码面临一个问题:

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) { 
    } 
} 

在这个片段中提示错误。我可以给image的错误

我试图让类抽象,但它然后干扰oncreate束代码。任何帮助,将不胜感激

回答

3

您正在实现的接口有三种方法。你正在实施其中两个。您需要添加但不

onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) 

RecyclerView孩子不希望RecyclerView及其祖先拦截触摸事件与被调用。您可以简单地添加

@Override 
public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) { 
} 

到类

7

这个消息告诉你,那RecyclerView.OnItemTouchListener(这是一个接口)定义了一个名为onRequestDisallowInterceptTouchEvent(boolean)方法。该方法需要由实现OnItemTouchListener接口的每个类来实现。

所以才添加此方法一个空的身体......

@Override 
public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) { 
} 

...和对Java语言界面一看: https://docs.oracle.com/javase/tutorial/java/concepts/interface.html

+0

谢谢...只是多了一个题 。我把它放在哪里? –

+1

你需要把这个方法放在你的'RecyclerTouchListener'类 –

+0

非常感谢你 –

相关问题