본문 바로가기

프로그래밍/안드로이드

안드로이드 DatePicker, TimePicker

안드로이드 DatePicker, TimePicker

안드로이드 에서 날짜와 시간을 입력받을때 좀 쉽게 입력 받을수 있도록 좋은 놈을 제공해 줍니다.

알고나믄 그리 어려운것은 아니구요. 저는 머리가 나빠 굉장히 고생했네요. 안 까물라고 흔적을 남깁니다.


위의 상태에서 버튼을 누르면 아래처럼 눌려진 버튼에 날짜와 시간을 띄우는 놈입니다.


먼저 코드를 한번 보도록 할게요.

▶ DatePicker 생성을 위한 이벤트 추가

btnDate.setOnClickListener(new OnClickListener(){
   @Override
   public void onClick(View v) {
    showDateDialog(DATE_DIALOG_ID);    //인스 상수 값입니다. 
    tempDateTimeSelBtn = btnDate;   //눌려진 버튼이 언놈인지 알려고 
임시 변수를 하나 둡니다.
   }
});


▶ TimePicker 생성을 위한 이벤트 추가
btnTime.setOnClickListener(new OnClickListener(){
   public void onClick(View v) {
    showDateDialog(TIME_DIALOG_ID);
    tempDateTimeSelBtn = btnTime;
   }   
});


▶ DatePicker, TimePicker 생성하여 호출하는 메소드
private void showDateDialog(int dateID){
  Dialog dia = null;
  final Calendar c = Calendar.getInstance();
  
  if(dateID == DATE_DIALOG_ID){
   dia = new DatePickerDialog(this,
                    mDateSetListener,c.get(Calendar.YEAR), c.get(Calendar.MONTH),
        c.get(Calendar.DAY_OF_MONTH));
  }else if(dateID == TIME_DIALOG_ID){
   dia = new TimePickerDialog(this, mTimeSetListener, c.get(Calendar.HOUR_OF_DAY), 
c.get(Calendar.MINUTE), false);
  }
  dia.show();
 }


▶ DatePickerDialog를 선택하였을때 호출되는 콜백 메소드.
 private DatePickerDialog.OnDateSetListener mDateSetListener =
                                 new DatePickerDialog.OnDateSetListener() {
  public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
    tempDateTimeSelBtn.setText(year+"년 "+(monthOfYear+1)+"월 "+dayOfMonth+"일");
  }
};


▶ TimePickerDialog를 선택하였을때 호출되는 콜백 메소드.
private TimePickerDialog.OnTimeSetListener mTimeSetListener = 
     new TimePickerDialog.OnTimeSetListener(){
   public void onTimeSet(TimePicker view, int hourOfDay, int minute) {    
    tempDateTimeSelBtn.setText(hourOfDay+"시 "+minute+"분");
   }     
};


위의 코드가 전부 입니다.
아마 한번 주욱 살펴 보시면 거의다 아실거 같네요. 궁금하신건 댓글 달아 주세요.