上拉加载自动加载数据,其实是一个分页的表现,也就是说,我们上拉的时候时需要自动取请求数据,但是在什么时候取请求呢?
我们应该滑动到最底下面的时候加载数据。这个时候我们最重要的就是判断什么时候到达了最底层。我们首先时要监听数据加载的
我们来看一下源码。这个是个
mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {//添加下拉直接刷新 @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); int visible = linearLayoutManager.getChildCount(); int total = linearLayoutManager.getItemCount(); int past = linearLayoutManager.findFirstCompletelyVisibleItemPosition(); if ((visible + past) >= total) { if(!isFresh){ page++; iniData(); } } } });
这是一个linnerLayout的上拉加载
如果时瀑布流的话,这个东西有点改变。但具体差不多
mPhotoRecycle.addOnScrollListener(new RecyclerView.OnScrollListener() {//添加下拉直接刷新 @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); int visible = staggeredGridLayoutManager.getChildCount(); int total = staggeredGridLayoutManager.getItemCount(); int[] past = staggeredGridLayoutManager.findLastCompletelyVisibleItemPositions(new int[2]); int last = Math.max(past[0], past[1]); if ((visible + last) >= total) { if(isLoadCompletely){ page++; getPhotoData(); } } } });