您的位置:首页 > 移动开发 > Android开发

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

2015-01-20 13:51 309 查看
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条数据返回给客户端。

前者是客户端做的事情较多,后者是服务器做的事情较多。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: