2015-06-10 2 views
1

У меня есть RecyclerView, который я хочу заморозить (т. Е. Не позволять пользователю прокручивать, но все же иметь возможность использовать любые текущие видимые виды) до тех пор, пока не будет выполнено определенное условие. Как мне это достичь?Android - RecyclerView - Как временно предотвратить прокрутку?

Я попытался установить OnScrollListener как следующее:

@Override 
public void onScrolled(final RecyclerView recyclerView, final int dx, final int dy) { 

    super.onScrolled(recyclerView, dx, dy); 

    if(myCondition){ 
     recyclerView.stopScroll(); 
    } 
}); 

без успеха.

ответ

1

Я понял это. OnItemTouchListener следует использовать вместо:

onItemTouchListener = new OnItemTouchListener() { 

     @Override 
     public boolean onInterceptTouchEvent(final RecyclerView recyclerView, final MotionEvent e) { 

      if(myCondition){ 

       switch(e.getAction()){ 

        case MotionEvent.ACTION_MOVE: return true; 
       } 
      } 

      return false; 
     } 

     @Override 
     public void onTouchEvent(final RecyclerView recyclerView, final MotionEvent e) { 
     } 
}; 

Теперь добавьте его в RecyclerView:

yourRecyclerView.addOnItemTouchListener(onItemTouchListener); 

Если кто-то находит более простой способ, пожалуйста, дайте мне знать!