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