Leanback源码-Present解析

97 阅读1分钟
sequenceDiagram
RecyclerView->>RecyclerView: dispatchLayout
RecyclerView->>GirdLayoutManager: onLayoutChildren
GirdLayoutManager->>GirdLayoutManager: appendOneColumnVisibleItems
GirdLayoutManager->>GirdLayoutManager: createItem
GirdLayoutManager->>RecyclerView.Recycler:tryGetViewHolderForPositionByDeadline
RecyclerView.Recycler->>RecyclerView.Adapter:createViewHolder
RecyclerView.Adapter->>ItemBridgeAdapter: createViewHolder
ItemBridgeAdapter->>Presenter: createViewHolder

tryGetViewHolderForPositionByDeadline:

  1. 尝试从缓存中查找ViewHolder
  2. 如果没有找到ViewHolde则 mAdapter.getItemViewType,
  3. 如果没有找到,尝试去回收池中找
  4. 如果没有找到ViewHolde,则 mAdapter.createViewHolder()
  5. tryBindViewHolderByDeadline //调用adapter中的把view和数据绑定