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中的三种取整函数
- 舍掉小数取整:Math.floor(3.5)=3.0
- 四舍五入取整:Math.rint(3.5)=4.0
- 进位取整:Math.ceil(3.1)=4 .0
Math.Ceil(9/8)=1;Math.Ceil(9/8.0)=2;
最终实现:
cloudQuery. PageIndex =isReset? 1 :( int )Math. ceil ( adapter .getItemCount()/ 8.0 )+ 1 ;
更多推荐
分页加载中由已加载的条目数判断下一页页码
发布评论