|  | public static String TAG = EndlessRecyclerOnScrollListener.class.getSimpleName(); | 
|  |  | 
|  | private int previousTotal = 0; // The total number of items in the dataset after the last load | 
|  | private boolean loading = true; // True if we are still waiting for the last set of data to load. | 
|  | private int visibleThreshold = 5; // The minimum amount of items to have below your current scroll position before loading more. | 
|  | int firstVisibleItem, visibleItemCount, totalItemCount; | 
|  |  | 
|  | private int current_page = 1; | 
|  |  | 
|  | private LinearLayoutManager mLinearLayoutManager; | 
|  |  | 
|  | public EndlessRecyclerOnScrollListener(LinearLayoutManager linearLayoutManager) { | 
|  | this.mLinearLayoutManager = linearLayoutManager; | 
|  | } | 
|  |  | 
|  | @Override | 
|  | public void onScrolled(RecyclerView recyclerView, int dx, int dy) { | 
|  | super.onScrolled(recyclerView, dx, dy); | 
|  |  | 
|  | visibleItemCount = recyclerView.getChildCount(); | 
|  | totalItemCount = mLinearLayoutManager.getItemCount(); | 
|  | firstVisibleItem = mLinearLayoutManager.findFirstVisibleItemPosition(); | 
|  |  | 
|  | if (loading) { | 
|  | if (totalItemCount > previousTotal) { | 
|  | loading = false; | 
|  | previousTotal = totalItemCount; | 
|  | } | 
|  | } | 
|  | if (!loading && (totalItemCount - visibleItemCount) | 
|  | <= (firstVisibleItem + visibleThreshold)) { | 
|  | // End has been reached | 
|  |  | 
|  | // Do something | 
|  | current_page++; | 
|  |  | 
|  | onLoadMore(current_page); | 
|  |  | 
|  | loading = true; | 
|  | } | 
|  | } | 
|  |  | 
|  | public abstract void onLoadMore(int current_page); | 
|  | } | 
 
没有评论:
发表评论