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

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条数据返回给客户端。


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值