java holder_java – 当onBindViewHolder被调用并且它是如何工作的?

让我开始只是一点点背景(你可能已经明白了,但是需要解释onBindViewHolder()).

RecyclerView旨在显示项目的长列表(或网格).假设你想显示100行的东西.一个简单的方法是创建100个视图,每行一个,并将其全部显示出来.但是这将是浪费的,因为他们中的大多数都是屏幕上的,因为我们说只有10个适合屏幕.

所以RecyclerView而是只创建了10个在屏幕上的视图.这样你就可以获得10倍的速度和内存使用.但是,当您开始滚动并需要开始显示下一个视图时会发生什么?

再次,一个简单的方法是为每个需要显示的新行创建一个新视图.但是,当您到达列表的末尾时,您将创建100个视图,并且您的内存使用率将与第一个方法相同.创建视图需要时间,所以滚动最有可能不顺利.

这就是为什么RecyclerView利用了这样的事实:当你滚动并且新的行进入屏幕时,老行消失在屏幕上.不是为每个新行创建新视图,而是通过将新数据绑定到旧视图来进行回收和重用.

这正好在onBindViewHolder()中.最初,您将获得新的未使用的视图持有者,您必须填充要显示的数据.但是当您滚动时,您将开始获取用于执行屏幕的行的视图持有者,而您必须使用新数据替换他们持有的旧数据.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值