gpt4 book ai didi

android - 甚至在 View 可见之前调用 RecyclerView onBindViewHolder

转载 作者:行者123 更新时间:2023-11-29 01:16:45 33 4
gpt4 key购买 nike

是否期望在 View 变为可见之前调用 onBindViewHolder?我需要记录用户看到的 View /索引,但找不到好的方法。现在,我计划监听滚动事件并继续检查第一个和最后一个可见 View ,并使用范围来检测哪些 View 是可见的。这些计算将在每个滚动事件上完成 - 即使经过一些优化,这似乎也是一个坏主意。

我使用的是 LinearLayoutManager,没有预缓存。

最佳答案

onBindViewHolder() 实际上总是在进入 View 之前调用,以便 ViewHolder 在出现时处于正确状态。这可能是一个“足够好”的解决方案,因为 ViewHolder 通常仅在 刚好超出范围时才绑定(bind)。

我能想到的另一个解决方案可能是简单地跟踪滚动的距离。假设每个 View 在屏幕上的大小相同,您可以跟踪滚动的距离。如果 dy > viewHeight 那么您可以将“已查看的索引”计数器加一。这个想法是你总是从索引 0 开始,所以索引 0 - n 已经被立即查看了。然后,当用户向下滚动时,它将是 0 - n+10 - n+2 等等。与在每次滚动时使用 findFirstVisibleItemPosition() 相比,此计算要快得多。

您还必须考虑对 setPosition 的任何调用都会产生影响。这允许您在 RecyclerView 中跳来跳去,因此每次执行此操作时都必须重新计算。这就是 findFirstVisibleItemPosition 调用会派上用场的地方。 (无论如何你都需要这样做,因为滚动监听器没有被调用)。

此外,如果您执行任何删除索引的过滤,这也会对结果产生影响,需要考虑在内。

关于android - 甚至在 View 可见之前调用 RecyclerView onBindViewHolder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39047123/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com