Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import android.support.v7.widget.GridLayoutManager;
- import android.support.v7.widget.LinearLayoutManager;
- import android.support.v7.widget.RecyclerView;
- import android.util.Log;
- /**
- * Created by Developer on 08/08/2016.
- */
- public abstract class EndlessRecyclerOnScrollListener extends
- RecyclerView.OnScrollListener {
- public static String TAG = EndlessRecyclerOnScrollListener.class
- .getSimpleName();
- private int previousTotal = 0;
- private boolean loading = true;
- private int visibleThreshold = 1;
- int firstVisibleItem, visibleItemCount, totalItemCount;
- private int current_page = 1;
- private GridLayoutManager mGridLayoutManager = null;
- private LinearLayoutManager mLinearLayoutManager = null;
- public EndlessRecyclerOnScrollListener(RecyclerView.LayoutManager layoutManager) {
- if(layoutManager instanceof GridLayoutManager)
- this.mGridLayoutManager = (GridLayoutManager)layoutManager;
- else
- this.mLinearLayoutManager = (LinearLayoutManager)layoutManager;
- }
- @Override
- public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
- super.onScrolled(recyclerView, dx, dy);
- visibleItemCount = recyclerView.getChildCount();
- if(null != mGridLayoutManager){
- totalItemCount = mGridLayoutManager.getItemCount();
- firstVisibleItem = mGridLayoutManager.findFirstVisibleItemPosition();
- }
- else if(null != mLinearLayoutManager){
- totalItemCount = mLinearLayoutManager.getItemCount();
- firstVisibleItem = mLinearLayoutManager.findFirstVisibleItemPosition();
- }
- Log.i(TAG, visibleItemCount+", "+totalItemCount+", "+firstVisibleItem);
- if (loading) {
- if (totalItemCount > previousTotal) {
- loading = false;
- previousTotal = totalItemCount;
- }
- }
- if (!loading && (totalItemCount - visibleItemCount) <= (firstVisibleItem + visibleThreshold)) {
- // End has been reached
- Log.i("LoadMore invoked", totalItemCount - visibleItemCount + ", " +firstVisibleItem + visibleThreshold);
- // Do something
- current_page++;
- onLoadMore(current_page);
- loading = true;
- }
- }
- public abstract void onLoadMore(int current_page);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement