EditText 천단위 콤마(,)설정하기

 


EditText를 작성할 때, TextWatcher를 이용해 천단위마다 콤마(,)를 찍을 수 있습니다.

여러 개의 EditText에 콤마(,) 설정을 하기위해서는 콤마설정을 하는 커스텀을 만들어주면 됩니다.

 

CustomTextWathcer 클래스

public class CustomTextWatcher implements TextWatcher {

    private EditText editText;
    String strAmount = "";

    CustomTextWatcher(EditText et) {
        editText = et;
    }

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

    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        if(!TextUtils.isEmpty(s.toString()) && !s.toString().equals(strAmount)) {
            strAmount = makeStringComma(s.toString().replace(",", ""));
            editText.setText(strAmount);
            Editable editable = editText.getText();
            Selection.setSelection(editable, strAmount.length());
        }
    }

    @Override
    public void afterTextChanged(Editable s) {

    }

    protected String makeStringComma(String str) {    // 천단위 콤마설정.
        if (str.length() == 0) {
            return "";
        }
        long value = Long.parseLong(str);
        DecimalFormat format = new DecimalFormat("###,###");
        return format.format(value);
    }
}

makeStringComma는 천단위마다 콤마설정을 합니다.

그리고 onTextChanged에서 EditText에 값이 입력될 때마다 천단위에 콤마를 찍어줍니다.

 

 

edittext.addTextChangedListener(new CustomTextWathcher(edittext));

addTextChangedListener로 커스텀(CustomTextWatcher)을 사용하면 됩니다.


+ Recent posts