Recyclerview在滑动时,滑出屏幕的ViewHolder会被回收到mCachedViews队列中,mCachedViews默认size为2(可调用recyclerView.setItemViewCacheSize修改),如果已满则采用先进先出放入mRecyclerPool,显示到屏幕的item会在mCachedViews精确查找,如果有一样的View则直接返回,不会调用onBindViewHolder(),如果没有则从mRecyclerPool取一个同样ViewType的ViewHolder,并调用onBindViewHolder()重新绑定数据。如果mRecyclerPool为空,则调用onCreatViewHolder()创建ViewHolder。 另外,当我们对recyclerview进行插入,删除等需要重新布局的操作时,会把每个item按照新的位置要求重新排列放到mAttachedScrap列表中。在重新布局时将mAttachedScrap中的ViewHolder布局到页面。