package org.michenux.yourappidea.aroundme; import android.support.v7.widget.RecyclerView; import com.nostra13.universalimageloader.core.ImageLoader; import static android.support.v7.widget.RecyclerView.OnScrollListener; public class RecyclerViewPauseOnScrollListener extends OnScrollListener { private ImageLoader mImageLoader; private final boolean mPauseOnScroll; private final boolean mPauseOnFling; private final OnScrollListener mExternalListener; public RecyclerViewPauseOnScrollListener(ImageLoader imageLoader, boolean pauseOnScroll, boolean pauseOnFling) { this(imageLoader, pauseOnScroll, pauseOnFling, null); } public RecyclerViewPauseOnScrollListener(ImageLoader imageLoader, boolean pauseOnScroll, boolean pauseOnFling, OnScrollListener customListener) { this.mImageLoader = imageLoader; this.mPauseOnScroll = pauseOnScroll; this.mPauseOnFling = pauseOnFling; mExternalListener = customListener; } @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { if (mExternalListener != null) { mExternalListener.onScrolled(recyclerView, dx, dy); } } @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { switch (newState) { case RecyclerView.SCROLL_STATE_IDLE: mImageLoader.resume(); break; case RecyclerView.SCROLL_STATE_DRAGGING: if (mPauseOnScroll) { mImageLoader.pause(); } break; case RecyclerView.SCROLL_STATE_SETTLING: if (mPauseOnFling) { mImageLoader.pause(); } break; } if (mExternalListener != null) { mExternalListener.onScrollStateChanged(recyclerView, newState); } } }