private int pageStart = 1 ;//分页请求传入的页码 private final  int pageLimit = 8 ;//每次请求的条目数
//请求接口,使用了Rxjava,isRest代表是刷新请求还是加载更多 private void loadData ( boolean isReset) { if (isReset){ pageStart = 1 ; }
@Override public void onNext (CloudQueryResult cloudQueryResult) { if (getView()== null ){ return; } if (cloudQueryResult.getData() != null || cloudQueryResult.getData().size() > 0 ) {//请求成功,并且该页有数据返回,加一 pageStart ++ ;     } 原写法,界面中定一个全局变量 pageStart,用于记录点击加载更多应该请求的页码,存在难以维护各种情况下的pageStart的值的问题,因为一下拉pageStart就重置为1了,所以考虑使用分页加载中由已加载的条目数判断下一页页码,使用RecycleView的getItemCount作为请求的条目数。总条目除以每页数向上取整+1可以作为下次加载更多请求的条目数。 :( int )Math. ceil ( adapter .getItemCount()/ 8.0 )+ 1

java中的三种取整函数

  1. 舍掉小数取整:Math.floor(3.5)=3.0
  2. 四舍五入取整:Math.rint(3.5)=4.0
  3. 进位取整:Math.ceil(3.1)=4 .0
注意区分i/8和i/8.0点值:
Math.Ceil(9/8)=1;Math.Ceil(9/8.0)=2;




最终实现:
cloudQuery. PageIndex =isReset? 1 :( int )Math. ceil ( adapter .getItemCount()/ 8.0 )+ 1 ;

更多推荐

分页加载中由已加载的条目数判断下一页页码