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