public DatePicker(Context context, AttributeSet attrs) { super(context, attrs); mContext = context; mCalendar = Calendar.getInstance(); initMonthDisplay(); ((LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE)) .inflate(R.layout.date_picker, this, true); mDayPicker = (NumberPicker) findViewById(R.id.date_day); mMonthPicker = (NumberPicker) findViewById(R.id.date_month); mYearPicker = (NumberPicker) findViewById(R.id.date_year); mDayPicker.setMinValue(1); mDayPicker.setMaxValue(31); mDayPicker.setValue(20); mDayPicker.setFormatter(NumberPicker.TWO_DIGIT_FORMATTER); mMonthPicker.setMinValue(0); mMonthPicker.setMaxValue(11); mMonthPicker.setDisplayedValues(mMonthDisplay); mMonthPicker.setValue(mCalendar.get(Calendar.MONTH)); mYearPicker.setMinValue(1950); mYearPicker.setMaxValue(2100); mYearPicker.setValue(mCalendar.get(Calendar.YEAR)); mMonthPicker.setOnValueChangedListener( new OnValueChangeListener() { @Override public void onValueChange(NumberPicker picker, int oldVal, int newVal) { mCalendar.set(Calendar.MONTH, newVal); updateDate(); } }); mDayPicker.setOnValueChangedListener( new OnValueChangeListener() { @Override public void onValueChange(NumberPicker picker, int oldVal, int newVal) { mCalendar.set(Calendar.DATE, newVal); updateDate(); } }); mYearPicker.setOnValueChangedListener( new OnValueChangeListener() { @Override public void onValueChange(NumberPicker picker, int oldVal, int newVal) { mCalendar.set(Calendar.YEAR, newVal); updateDate(); } }); updateDate(); }