Заставляет recyclerView реагировать на события щелчка, когда он не прокручивается:
if (recyclerView.scrollState == SCROLL_STATE_IDLE) {
playOrResume()
}
Обновление
Возможно, что-то подобное будет работать:
private static int mScrollState;
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView,int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
scrollState = recyclerView.scrollState;
}
// or use this method for finer control
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
switch (newState) {
case RecyclerView.SCROLL_STATE_IDLE:
System.out.println("The RecyclerView is not scrolling");
break;
case RecyclerView.SCROLL_STATE_DRAGGING:
System.out.println("Scrolling now");
break;
case RecyclerView.SCROLL_STATE_SETTLING:
System.out.println("Scroll Settling");
break;
}
}
});
Используйте mScrollState
внутри ClickListener
для проверки состояния
Обновление
Так что onCLick
вызывается перед onScrollStateChanged
, используйтеэто Handler
в onCLick
и остановится на 200, что позволит onScrollStateChanged
активировать
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
if (recyclerView.scrollState == SCROLL_STATE_IDLE) {
playOrResume()
}
}
}, 200);