其实这个处理是在服务器就已经处理了的,但是在客户端还是要做一些简单的业务处理。比如设置本次要获取的页码,并判断是否是最后一页,页码的加一等等操作。这里通过Iyuba和Pinpar两个项目进行一个简单的总结。
一、Iyuba方式
这里,只需要在请求的时候发送一个请求的“页码”的参数即可,服务器返回上一页、下一页、当前页、第一页和尾页,可以通过判断尾页和当前页的大小来确定下一次可以请求的页码。
二、Pinpar方式
这里在请求的时候要指定当前的最大id,并指定要取的页码数和每页的记录个数。这里只要取到最大id之后,向服务器请求即可。
感觉Iyuba方式要更好一些。二的方式如何提示已经没有更多数据?判断返回的数据是否为空?
在客户端,对于下拉操作和上拉操作是否要分成两个独立的操作?
上拉的时候只需要请求第一页或最大id为0的数据即可;
对于Iyuba方式,首先判断返回的尾页和当前请求的页码是否相等,如果不等说明不是最后一页,将请求的页码加1;如果尾页和当前请求的页码相等,或者尾页为0时,说明都是到了最后一页。在使用上拉加载时,先通过标志判断是否是最后一页,如果是则不处理;否则,再将加1之后的页码作为参数进行请求,同时根据返回的值处理是否为尾页的标志。
只不过这里在下拉的时候,请求的页码一定是1,同时指定的下一页的页码一定是2(这里也可以用reqPageNum++处理);对于上拉操作,请求的页码应该是reqPageNum参数,同时指定的下一页的页码一定要用reqPageNum处理。
对于Pinpar方式,下拉的时候传入maxId=0,并将返回的结果中最大的id赋给maxId,下次请求的时候传入maxId。是否为最后一页只能通过返回的结果集是否为空来判断。
感觉上,上拉和下拉本就是一个操作,合理的控制reqPageNum参数和判断请求是否到达尾部的标志,合理处理逻辑。