【Android 非常基础】ListView分页加载提交的参数分析

来源:互联网 发布:和平典范 知乎 编辑:程序博客网 时间:2024/04/29 02:01

ListView数据一般会采用分页加载,以便提高用户体验。分页加载,那就涉及到滑动到底加载更多,逻辑是:监听ListView的滑动状态,判断若最后一条出现在屏幕中,则认为滑动到底,提交一个网络请求获取数据。在提交请求时,参数一般为起始下标fromIndex,终止下标toIndex。例如每次请求20条数据,加载第一页,提交的参数分别是fromIndex=0,toIndex=19,加载第二页,fromIndex=20,toIndex=39,以此类推。如果是这样的话,那就会有问题,场景如下:

当加载第一页数据时,提交参数为fromIndex=0,toIndex=19,服务器返回了20条数据,是第0-19条,

当加载第二页数据时,提交参数为fromIndex=20,toIndex=39,因为数据库一共也只有25条数据,那么这次服务器返回了5条数据,是第20-24条。

这时数据库数据突然增多,增加到了60条(即第0-59条),那么当加载第三页数据时,提交参数为fromIndex=40,toIndex=59,那么这次服务器返回了20条数据,是第40-59条。

大家看出问题来了吗,第25-39条数据是不是就请求不到了,出现这种问题主要是因为默认返回的数据都是20条,没有考虑不满20的情况。

解决此问题,有以下方法:

1.客户端请求的参数仍然是fromIndex,toIndex,不过fromIndex与toIndex的值要根据服务器真正返回的条数做计算,默认第一页是fromIndex0,toIndex=19,服务器返回了20条,第二页,fromIndex=20,toIndex=39,服务器返回了5条,那么第三次fromIndex=25,toIndex=44,以此类推。

2.客户端请求的参数是lastItemId,将上一页最后一条item id值作为参数提交给服务器,服务器将此id后一页的20条数据返回给客户端。


前者是客户端做的事情较多,后者是服务器做的事情较多。

0 0
原创粉丝点击