question: V pickUpViewFromPool ( T preferredData , T prepareData ) { V v = null ; boolean isNewView = false ; if ( mPool . isEmpty ( ) ) { v = mViewCreator . createView ( mContext ) ; isNewView = true ; } else { Iterator < V > iter = mPool . iterator ( ) ; while ( iter . hasNext ( ) ) { V vpv = iter . next ( ) ; if ( mViewCreator . hasPreferredData ( vpv , preferredData ) ) { v = vpv ; iter . remove ( ) ; break ; } } if ( v == null ) { v = mPool . pop ( ) ; } } mViewCreator . prepareViewToLeavePool ( v , prepareData , isNewView ) ; return v ; }
target:  Gets a view from the pool and prepares it