首页 > 解决方案 > 如何测量对 findViewByID 的额外调用 - RecyclerView

问题描述

假设您的RecyclerView列表中的每个项目都包含四个嵌套View的 s,并且您没有将这些视图缓存在ViewHolder. findViewById()如果屏幕上适合 8 个项目,如果滚动浏览 30 个项目,大约会进行多少额外的调用?

除了适合屏幕的八个项目之外,假设平滑滚动还需要两个额外的项目。

我认为答案是60。

我对吗?

标签: androidandroid-recyclerview

解决方案


假设滚动 30 个项目,每个项目只绑定一次数据。

每个项目内部有 4 个视图,每个 4 次调用bind

findViewById()来电将是

30 * 4 = 120.

不应调用 2 个视图,因为它们尚未绑定。

你的问题

将进行多少次额外的 findViewById() 调用

鉴于:

可见 8 个项目。隐藏了 2 个项目。

如果您缓存了视图,总调用量将是:

(8 + 2) * 4 = 40.

额外的电话将是 120 - 40 = 80


推荐阅读