본문 바로가기

카테고리 없음

[And] NumberPicker, DatePicker 에 입력된 값 가져오기 ( EditText )

반응형

NumberPicker DatePicker 는 숫자나 텍스트를 휠처럼 선택해 사용자들에게 편리한 ui를 제공합니다.

하지만 초기 보여지는 값과 사용자가 선택하고자 하는 값의 차이가 큰 경우 오히려 불편함을 느끼는 유저들도 많습니다. ( 저 포함 )  그럴경우 휠을 사용하지 않고 숫자를 클릭하면 EditText로 변해 값을 입력할 수 있습니다. 

일반적으로 휠을 이용해 값을 변동할 경우 'OnDateChangeListener' 로 값이 변할때 트래킹이 가능하지만 EditText로 입력하는 경우는 다른 방법으로 값을 가져와야 합니다.

NumberPicker 구현 방법은 제 포스팅을 참고 해주세요.

>> EditText로 입력된 값 가져오기 

아래는 제가 개발한 식물일기의 일부 화면을 캡쳐한 사진입니다. 사진의 날짜를 선택하는 부분에 커서가 있습니다. 값은 정해진 값내에서만 입력이 가능합니다. ( 1~ 31 중에 고를수 있도록 했을 경우 그 사이 값만 입력 가능 ) 

이럴 경우 NumberPicker DatePicker 속 EditText 뷰의 값을 가져와야 합니다. 

> NumberPicker

        fun getEditTextInNumberPicker(view: View): EditText{
            return view.findViewById(Resources.getSystem().getIdentifier("numberpicker_input","id","android"))
        }    

> DatePicker

각 day, month,year Spinner를 가져와 위 NumberPicker처럼 EditText를 가져오면 됩니다.

var daySpinnerView = datePickerView.findViewById<View>(Resources.getSystem().getIdentifier("day","id","android"))
var monthSpinnerView = datePickerView.findViewById<View>(Resources.getSystem().getIdentifier("month","id","android"))
var yearSpinnerView = datePickerView.findViewById<View>(Resources.getSystem().getIdentifier("year","id","android"))

var dayEditText = daySpinnerView.findViewById(Resources.getSystem().getIdentifier("numberpicker_input","id","android"))

위 게시된 사진처럼 커스텀해서 사용하는 경우 '확인' 버튼이 눌렸을때 editText의 text값이 빈값이면 spinner의 인덱스 값을, 그렇지 않으면 editText의 text값을 Int형으로 변환해서 사용하시면 됩니다. 

 

제가 개발한 '식물일기' 도 많이 다운받아 주세요!

반응형