您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

何时调用onBindViewHolder及其工作方式?

何时调用onBindViewHolder及其工作方式?

让我从一些背景知识开始(您可能已经了解了,但是需要进行解释onBindViewHolder())。

RecyclerView用于显示项目的长列表(或网格)。假设您要显示100行。一种简单的方法是只创建100个视图,每行一个视图,然后将它们全部布局。但这将是浪费的,因为它们中的大多数将不在屏幕上,因为可以说其中只有10个适合屏幕。

因此,RecyclerView仅创建屏幕上的10个视图。这样,您的速度和内存使用率将提高10倍。但是,当您开始滚动并需要开始显示一个视图时会发生什么?

同样,一种简单的方法是为您需要显示的每个新行创建一个新视图。但是这样一来,当您到达列表末尾时,您将创建100个视图,并且内存使用情况将与第一种方法相同。创建视图需要花费时间,因此您的滚动很可能不会流畅。

这就是为什么RecyclerView利用以下事实:滚动并在屏幕上显示新行时,旧行也会从屏幕上消失。代替为每个新行创建新视图,而是通过将新数据绑定到旧视图来对其进行 和重用。

这恰好发生在中onBindViewHolder()。最初,您将获得新的未使用的视图持有人,并且必须用要显示的数据填充它们。但是,当您滚动时,将开始获得用于离开屏幕的行的视图持有人,并且您必须用新数据替换它们持有的旧数据。

其他 2022/1/1 18:20:10 有510人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶