关于 APP 浏览中加载下一页内容,有没有好的设计方法,不需要用户到达最底部再加载

2022-01-05 14:24:05 +08:00
 kaiki
微博的是浏览到一半就会加载出下一页的内容,但是不知道是怎么计算,主要是不知道他继续下滑,第二次加载下一页是在什么时候,每个内容的高度也不固定,那也不能用滚动条高度来计算,有什么好的方法吗?
1610 次点击
所在节点    问与答
19 条回复
shuxhan
2022-01-05 14:29:07 +08:00
直接计算当前页面距离底部的距离不行吗,大概 4.5 条数据的样子,然后加载一波,每波放十多条差不多
kaiki
2022-01-05 14:44:26 +08:00
@shuxhan 因为不知道每个内容的高度,所以可能出现 10 个内容都很短,或最后一个内容很长,在浏览最后一个内容的时候才能加载
NexTooo
2022-01-05 14:49:37 +08:00
测试了下 Android 端的表现,看上去更像是按照 item 的 position 来计算的,因为滑动过程中右侧那个滑动条的高度是动态在变的,上面和下面应该有部分屏幕外的 item 被回收了,但是有一次好几条长微博的时候,滑动条距离底部还有段距离就触发加载更多了
另外也没有强制说用户一定看不到底部加载栏,稍微滑的快点就有可能在底部看到,并等待一两秒。。
3dwelcome
2022-01-05 14:51:52 +08:00
你可以在需要加载的位置,用一个空的<img onload 来触发下一页加载事件。
kaiki
2022-01-05 14:53:43 +08:00
@NexTooo 我就是想让用户体验稍微好一点,提前处理一下加载,也不是强制吧
没有测试过大量 item 会不会回收,如果回收的话,点击返回顶部那回收的部分不就看不到了吗?
其实我只是想要一个好点的思路,看看大家的意见。
kaiki
2022-01-05 14:54:47 +08:00
就是说在内容中间插入一个 onload 事件,固定滑动到这个部分就会加载是吧,也是个办法。
NexTooo
2022-01-05 14:58:17 +08:00
@kaiki 回收不是说销毁了,可能只是固定多个 Item 反复套数据而已。
那其实按你的设想,做个监听,指定 position 显示在屏幕上的时候,就可以触发下一次的加载更多啦。
yukiww233
2022-01-05 15:17:11 +08:00
那就在最后第 n 个 item 可见的回调里请求数据
vance123
2022-01-05 15:34:09 +08:00
定时检测,滚到 90%就加载
CommandZi
2022-01-05 16:45:17 +08:00
剩余内容高度
GDAN001
2022-01-05 16:58:44 +08:00
在滚动事件里计算视窗到页面底部的距离就行,要加个节流
i979491586
2022-01-05 17:02:51 +08:00
每条的高度动态变化的,但是知道目前一共有多少条吧?用户当前屏幕显示到了第几条吧?省下的一切都好解决了
TomatoYuyuko
2022-01-05 17:07:06 +08:00
出现对时间、距离、频率无法把控的情况时,轮询判断是终极答案之一(但未必是最优解
LLaMA2
2022-01-05 17:07:14 +08:00
不知道你是网页是原生 App 。原生 App 是可以知道当前可视区域内 list 中含有的 item 和 item 的相关信息,分页假定是一页 10 条,判断到当前可视的 item 的 index 最大值超过页数*10*0.6 就加载,这样就是说超过 60%就加载。
关键不是计算高度,而是计算 index
LLaMA2
2022-01-05 17:11:42 +08:00
关于 item 被回收这件事。你应该使用本地缓存。如果特定参数特定页数返回结果一定是一样的话,请求过一次就不应该再请求了,缓存中取
dcty
2022-01-05 18:12:28 +08:00
推荐直接用 list.count - itemIndex == X 来判断就可(渲染 cell 的时候就有 index
判断高度也不是不可以,scrollview/listview 是可以拿到 contentSize 的(能做到的,至于是否高效或者环保另说),然后在滚动停止或者滚动变化的时候进行判断 contentSize.height - contentOffset.y == Y
至于你提高的 item 回收,listview 或 tableview 重要的一点就是复用,所以可以不用关心这点。
另外有提到定时检测的,理论上 listview/scrollview 都有回调位置变化,应该没必要用定时器了(也不是不可以用
xmuli
2022-01-05 19:57:13 +08:00
永远没有下一页? 无穷无尽很累的
q503315508
2022-01-05 21:05:06 +08:00
paging3 能预加载吧
VirgilChen97
2022-01-05 22:03:56 +08:00
可不可以搞个占位符,用户滚动不会被卡住,然后异步加载内容。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/826342

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX