首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

RecyclerView预加载!

原因是RecyclerView并不保证每个表项出现时onScrolled()都会被调用,若滚动非常快,某个表项错过该回调是有可能发生的。...layoutManager.findLastVisibleItemPosition() >= layoutManager.itemCount - 1 - preloadCount) { onPreload() } 将==改成>=,条件是放宽了,但多次调用的问题更加严重了...不要担心用户在列表底部多次上拉导致回调多次预加载,因为这种情况下onBindViewHolder()不会执行多次。当RecyclerView更换LayoutManager时,也不需要修改代码。...唯一需要担心的是,列表滚动到底部触发了一次预加载后,又往回滚动(阈值位表项滚出屏幕),假设预加载迟迟没有完成,此时再次滚动到底部,移出屏幕的阈值位表项需要重新执行`onBindViewHolder(),...但我更倾向于让业务层维护这个标记位,因为若Adapter只单纯地提供预加载时机,它就不需要关心业务层加载何时结束。

2.4K00
领券