본문 바로가기
프로그래밍/Android

[Android] 숫자 천단위 콤마찍기

by Youngs_ 2023. 7. 20.

가격등을 입력할때 천단위 콤마가 자동입력되도록 할 EditText를 만든다.

가격이 큰 숫자를 입력할 경우 튕기는 경우가 있으므로 maxLength는 15로 설정했다.

try catch문으로 에러가 났을때 넘길수있으므로 maxLength는 굳이 안해도된다.

                <EditText
                    android:id="@+id/somethingEditText"
                    android:inputType="number"
                    android:maxLength="15" />​

 

    // 세자리로 끊어서 쉼표 보여주고, 소숫점 셋째짜리까지 보여준다.
    DecimalFormat df = new DecimalFormat("###,###");
    // 값 셋팅시, StackOverFlow를 막기 위해서, 바뀐 변수를 저장해준다.
    String result="";
    
    ....
    
    
        binding.somethingEditText.addTextChangedListener(new TextWatcher(){

            @Override
            public void afterTextChanged(Editable s) {}

            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {}

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
            try
            {
                if(!TextUtils.isEmpty(s.toString()) && !s.toString().equals(result)){
                    result = df.format(Long.parseLong(s.toString().replaceAll(",", "")));   // 에딧텍스트의 값을 변환하여, result에 저장.
                    binding.somethingEditText.setText(result);    // 결과 텍스트 셋팅.
                    binding.somethingEditText.setSelection(result.length());     // 커서를 제일 끝으로 보냄.
                }
            } catch (Resources.NotFoundException e) {

            } catch (NumberFormatException e) {

            }
            }
        });

 

댓글