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
注意区分i/8和i/8.0点值:
Math.Ceil(9/8)=1;Math.Ceil(9/8.0)=2;
Math.Ceil(9/8)=1;Math.Ceil(9/8.0)=2;
最终实现:
cloudQuery.
PageIndex
=isReset?
1
:(
int
)Math.
ceil
(
adapter
.getItemCount()/
8.0
)+
1
;