boolean synchronizeStackViewsWithModel(){
  if (mStackViewsDirty) {
    ArrayList<T> data=mCallback.getData();
    float stackScroll=mStackScroller.getStackScroll();
    int[] visibleRange=mTmpVisibleRange;
    boolean isValidVisibleRange=updateStackTransforms(mCurrentTaskTransforms,data,stackScroll,visibleRange,false);
    mTmpTaskViewMap.clear();
    int childCount=getChildCount();
    for (int i=childCount - 1; i >= 0; i--) {
      DeckChildView<T> tv=(DeckChildView)getChildAt(i);
      T key=tv.getAttachedKey();
      int taskIndex=data.indexOf(key);
      if (visibleRange[1] <= taskIndex && taskIndex <= visibleRange[0]) {
        mTmpTaskViewMap.put(key,tv);
      }
 else {
        mViewPool.returnViewToPool(tv);
      }
    }
    for (int i=visibleRange[0]; isValidVisibleRange && i >= visibleRange[1]; i--) {
      T key=data.get(i);
      DeckChildViewTransform transform=mCurrentTaskTransforms.get(i);
      DeckChildView tv=mTmpTaskViewMap.get(key);
      if (tv == null) {
        tv=mViewPool.pickUpViewFromPool(key,key);
        if (mStackViewsAnimationDuration > 0) {
          if (Float.compare(transform.p,0f) <= 0) {
            mLayoutAlgorithm.getStackTransform(0f,0f,mTmpTransform,null);
          }
 else {
            mLayoutAlgorithm.getStackTransform(1f,0f,mTmpTransform,null);
          }
          tv.updateViewPropertiesToTaskTransform(mTmpTransform,0);
        }
      }
      tv.updateViewPropertiesToTaskTransform(mCurrentTaskTransforms.get(i),mStackViewsAnimationDuration,mRequestUpdateClippingListener);
    }
    mStackViewsAnimationDuration=0;
    mStackViewsDirty=false;
    mStackViewsClipDirty=true;
    return true;
  }
  return false;
}

boolean synchronizeStackViewsWithModel ( ) { if ( mStackViewsDirty ) { ArrayList < T > data = mCallback . getData ( ) ; float stackScroll = mStackScroller . getStackScroll ( ) ; int [ ] visibleRange = mTmpVisibleRange ; boolean isValidVisibleRange = updateStackTransforms ( mCurrentTaskTransforms , data , stackScroll , visibleRange , false ) ; mTmpTaskViewMap . clear ( ) ; int childCount = getChildCount ( ) ; for ( int i = childCount - 1 ; i >= 0 ; i -- ) { DeckChildView < T > tv = ( DeckChildView ) getChildAt ( i ) ; T key = tv . getAttachedKey ( ) ; int taskIndex = data . indexOf ( key ) ; if ( visibleRange [ 1 ] <= taskIndex && taskIndex <= visibleRange [ 0 ] ) { mTmpTaskViewMap . put ( key , tv ) ; } else { mViewPool . returnViewToPool ( tv ) ; } } for ( int i = visibleRange [ 0 ] ; isValidVisibleRange && i >= visibleRange [ 1 ] ; i -- ) { T key = data . get ( i ) ; DeckChildViewTransform transform = mCurrentTaskTransforms . get ( i ) ; DeckChildView tv = mTmpTaskViewMap . get ( key ) ; if ( tv == null ) { tv = mViewPool . pickUpViewFromPool ( key , key ) ; if ( mStackViewsAnimationDuration > 0 ) { if ( Float . compare ( transform . p , 0f ) <= 0 ) { mLayoutAlgorithm . getStackTransform ( 0f , 0f , mTmpTransform , null ) ; } else { mLayoutAlgorithm . getStackTransform ( 1f , 0f , mTmpTransform , null ) ; } tv . updateViewPropertiesToTaskTransform ( mTmpTransform , 0 ) ; } } tv . updateViewPropertiesToTaskTransform ( mCurrentTaskTransforms . get ( i ) , mStackViewsAnimationDuration , mRequestUpdateClippingListener ) ; } mStackViewsAnimationDuration = 0 ; mStackViewsDirty = false ; mStackViewsClipDirty = true ; return true ; } return false ; }
synchronizes the views with the model
