private boolean goTo(long day,boolean animate,boolean setSelected,boolean forceScroll){
  if (setSelected) {
    mSelectedDay.setTimeInMillis(day);
  }
  mTempDay.setTimeInMillis(day);
  final int position=getPositionFromDay(day);
  View child;
  int i=0;
  int top=0;
  do {
    child=getChildAt(i++);
    if (child == null) {
      break;
    }
    top=child.getTop();
  }
 while (top < 0);
  int selectedPosition;
  if (child != null) {
    selectedPosition=getPositionForView(child);
  }
 else {
    selectedPosition=0;
  }
  if (setSelected) {
    mAdapter.setSelectedDay(mSelectedDay);
  }
  if (position != selectedPosition || forceScroll) {
    setMonthDisplayed(mTempDay);
    mPreviousScrollState=OnScrollListener.SCROLL_STATE_FLING;
    if (animate) {
      smoothScrollToPositionFromTop(position,LIST_TOP_OFFSET,GOTO_SCROLL_DURATION);
      return true;
    }
 else {
      postSetSelection(position);
    }
  }
 else   if (setSelected) {
    setMonthDisplayed(mSelectedDay);
  }
  return false;
}

private boolean goTo ( long day , boolean animate , boolean setSelected , boolean forceScroll ) { if ( setSelected ) { mSelectedDay . setTimeInMillis ( day ) ; } mTempDay . setTimeInMillis ( day ) ; final int position = getPositionFromDay ( day ) ; View child ; int i = 0 ; int top = 0 ; do { child = getChildAt ( i ++ ) ; if ( child == null ) { break ; } top = child . getTop ( ) ; } while ( top < 0 ) ; int selectedPosition ; if ( child != null ) { selectedPosition = getPositionForView ( child ) ; } else { selectedPosition = 0 ; } if ( setSelected ) { mAdapter . setSelectedDay ( mSelectedDay ) ; } if ( position != selectedPosition || forceScroll ) { setMonthDisplayed ( mTempDay ) ; mPreviousScrollState = OnScrollListener . SCROLL_STATE_FLING ; if ( animate ) { smoothScrollToPositionFromTop ( position , LIST_TOP_OFFSET , GOTO_SCROLL_DURATION ) ; return true ; } else { postSetSelection ( position ) ; } } else if ( setSelected ) { setMonthDisplayed ( mSelectedDay ) ; } return false ; }
this moves to the specified time in the view . if the time is not already in range it will move the list so that the first of the month containing the time is at the top of the view . if the new time is already in view the list will not be scrolled unless forcescroll is true . this time may optionally be highlighted as selected as well .
