private RecyclerView.ViewHolder getChildViewHolder(int viewType, ViewGroup parent) { final Queue<RecyclerView.ViewHolder> viewHolders = childViewHolderCache.get(viewType); if (!viewHolders.isEmpty()) { return viewHolders.poll(); } RecyclerView.ViewHolder childViewHolder = childAdapterViewTypeDelegates.get(viewType).createViewHolder(parent); childViewHolder.itemView.setTag(new ChildViewState()); return childViewHolder; }
private void unbindChildView(View childItemView) { ChildViewState childViewState = getChildViewState(childItemView); AdapterViewTypeDelegate delegate = childAdapterViewTypeDelegates.get(childViewState.viewItem.viewType); delegate.unbindViewHolder(childViewState.childViewHolder); childViewHolderCache.get(childViewState.viewItem.viewType).offer(childViewState.childViewHolder); childViewState.clearViewState(); }