어허

[Android] NumberPicker 음수 표현방법 본문

개발/Android

[Android] NumberPicker 음수 표현방법

AKDK 2016. 3. 11. 17:21
728x90


안드로이드


NumberPicker 는 value가 0보다 크거나 같아야 한다는 조건이 있다.


NumberPicker.java 중 일부

public void setMinValue(int minValue) {
    if (mMinValue == minValue) {
        return;
    }
    if (minValue < 0) {
        throw new IllegalArgumentException("minValue must be >= 0");
    }
    mMinValue = minValue; 


이렇게 되어있다.


이를 해결 하기위해서는


NumberPicker에는 0부터 값을 주고


그 값에 해당하는 String만 "-11" 형식으로 된 String을 집어넣어서 해결하면 된다.


물론 getValue하게되면 음수가 나오는 것은 아니므로, getValue했을때 가져오는 값에서 필요한 만큼 - 를 해서 던져주면 되는 것이다.


샘플코드

        int i;
        String [] stringMin = new String[15];
        for ( i = 0; i < stringMin.length; i++) {
            stringMin[i] = Integer.toString(i-9);
        }

        pickerMin = (NumberPicker) findViewById(R.id.numberPickerMin);
        pickerMin.setMinValue(0);
        pickerMin.setMaxValue(14);
        pickerMin.setDisplayedValues(stringMin);

이렇게 하면 stringMin[0]은 "-9", [1]은 "-8" ... 스트링이 들어가게되고


setDisplayedValues(stringMin)에서


NumberPicker의 value0에는 stringMin[0]의 값을 보여주게 된다.


해당값을 리턴해줄 때는 필요한 만큼 (여기서는 9만큼) 빼고 리턴해 주면 된다.


사용자가 -9를 보고 선택을 하면 NumberPicker의 getValue는 0이되고 -9해서 리턴해 주게 되면


부모는 -9라는 int를 리턴받을 수 있다.


   public void onDone(View v ) {

            Intent intent = new Intent();

            intent.putExtra("min", pickerMin.getValue()-9);
            intent.putExtra("max", pickerMax.getValue()-9);

            setResult(RESULT_OK, intent);

            finish();
        }
    }





728x90
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
공유하기 링크
Comments