question: private void correctTooLow ( int childCount ) { if ( mFirstPosition == 0 && childCount > 0 ) { final int firstTop = getScrollChildTop ( ) ; final int start = mListPadding . top ; final int end = ( getBottom ( ) - getTop ( ) ) - mListPadding . bottom ; int topOffset = firstTop - start ; final int lastBottom = getScrollChildBottom ( ) ; int lastPosition = mFirstPosition + childCount - 1 ; if ( topOffset > 0 ) { if ( lastPosition < mItemCount - 1 || lastBottom > end ) { if ( lastPosition == mItemCount - 1 ) { topOffset = Math . min ( topOffset , lastBottom - end ) ; } tryOffsetChildrenTopAndBottom ( - topOffset ) ; if ( lastPosition < mItemCount - 1 ) { fillDown ( lastPosition + 1 , getFillChildTop ( ) + mDividerHeight ) ; adjustViewsUpOrDown ( ) ; } } else if ( lastPosition == mItemCount - 1 ) { adjustViewsUpOrDown ( ) ; } } } }
target:  Check if we have dragged the bottom of the list too low (we have pushed the bottom element off the bottom of the screen when we did not need to). Correct by sliding everything back up.