RecyclerView 调用notifyDataSetChanged()刷新 平滑加载更多数据的方法解决

由于项目需要用到显示历史聊天记录,要求用户下拉时自动在RecyclerView顶部加载以前的聊天记录,并且尽可能的平滑加载数据。

常规做法是调用RecyclerView 的notifyDataSetChanged()方法,再调用scrollToPosition滚动到最后一条记录的底部,也就是停留在新加载的数据最后一条记录所在位置。

实际测试发现,这样无法做到平滑连续加载,因为在加载新数据后,RecyclerView总是需要滚动到最新数据的底部,此时用户可能正在看着某条记录,如果我们突然滚动到最新加载的数据底部,那就相当于用户还没看完你就给他翻页了,体验就会变差~

经过一番尝试,发现RecycleView还有个方法:findLastCompletelyVisibleItemPosition(),可以获取到RecycleView最后一个可见item的位置,这个方法很有用,因为只要记录下加载数据前的最后一个可见item位置,notifyDataSetChanged()后再滚动到这个item的位置,看起来页面数据加载就是连贯的,基本不会感觉界面抖动,从而提升用户体验。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值