RecyclerView_onBindViewHolder 被调用的时机

本文探讨了RecyclerView的onBindViewHolder方法在初次加载和滑动时的调用时机。在初始化时,调用入口位于onLayout方法;而在滑动时,入口是在onTouchEvent处理Action_Move事件,并通过view.post()触发GapWorker。
摘要由CSDN通过智能技术生成

1,问题

onBindViewHolder是RecyclerView数据更新的统一处理位置,那么它被调用的入口在哪?

 

2,方案

场景:初次加载、滑动

方案:debug模式下,查看调用链

 

3-1,初次加载场景,入口以及调用链

RecyclerView.onLayout()		// 初始化场景,入口
RecyclerView.dispatchLayout()
RecyclerView.dispatchLayoutStep2()

LinearLayoutManager.onLayoutChildren()
LinearLayoutManager.fill()
LinearLayoutManager.layoutChunk()
LinearLayoutManager.next()	

RecyclerView.Recycler.getViewForPosition()
RecyclerView.Recycler.tryGetViewHolderForPositionByDeadline()    // 获取缓存开始的地方
RecyclerView.Recycler.tryBindViewHolderByDeadline()
RecyclerView.Adapter.bindViewHolder()
RecyclerView.Adapter.onBindViewHolder()
RecyclerView.Adapter.onBindViewHolder()	// 等待实现的方法

3-2,滑动时,入口以及调用链

RecyclerView.onTouchEvent()		// MotionEvent.ACTION_MOVE 作为入口
RecyclerView.scrollByInternal()
RecyclerView.scrollStep()

LinearLayoutMa
  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值