question: private void onColumnSync ( ) { int syncPosition = Math . min ( mSyncPosition , getCount ( ) - 1 ) ; SparseArray < Double > positionHeightRatios = new SparseArray < Double > ( syncPosition ) ; for ( int pos = 0 ; pos < syncPosition ; pos ++ ) { final GridItemRecord rec = mPositionData . get ( pos ) ; if ( rec == null ) break ; Log . d ( TAG , "onColumnSync:" + pos + " ratio:" + rec . heightRatio ) ; positionHeightRatios . append ( pos , rec . heightRatio ) ; } mPositionData . clear ( ) ; if ( DBG ) Log . d ( TAG , "onColumnSync column width:" + mColumnWidth ) ; for ( int pos = 0 ; pos < syncPosition ; pos ++ ) { final GridItemRecord rec = getOrCreateRecord ( pos ) ; final double heightRatio = positionHeightRatios . get ( pos ) ; final int height = ( int ) ( mColumnWidth * heightRatio ) ; rec . heightRatio = heightRatio ; int top ; int bottom ; if ( isHeaderOrFooter ( pos ) ) { top = getLowestPositionedBottom ( ) ; bottom = top + height ; for ( int i = 0 ; i < mColumnCount ; i ++ ) { mColumnTops [ i ] = top ; mColumnBottoms [ i ] = bottom ; } } else { final int column = getHighestPositionedBottomColumn ( ) ; top = mColumnBottoms [ column ] ; bottom = top + height + getChildTopMargin ( pos ) + getChildBottomMargin ( ) ; mColumnTops [ column ] = top ; mColumnBottoms [ column ] = bottom ; rec . column = column ; } if ( DBG ) Log . d ( TAG , "onColumnSync position:" + pos + " top:" + top + " bottom:" + bottom + " height:" + height + " heightRatio:" + heightRatio ) ; } final int syncColumn = getHighestPositionedBottomColumn ( ) ; setPositionColumn ( syncPosition , syncColumn ) ; int syncToBottom = mColumnBottoms [ syncColumn ] ; int offset = - syncToBottom + mSpecificTop ; offsetAllColumnsTopAndBottom ( offset ) ; mDistanceToTop = - syncToBottom ; System . arraycopy ( mColumnBottoms , 0 , mColumnTops , 0 , mColumnCount ) ; }
target:  Our mColumnTops and mColumnBottoms need to be re-built up to the mSyncPosition - the following layout request will then layout the that position and then fillUp and fillDown appropriately.