가격등을 입력할때 천단위 콤마가 자동입력되도록 할 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) {
}
}
});
'프로그래밍 > Android' 카테고리의 다른 글
[Android] ProgressBar 구현 (1) | 2023.11.22 |
---|---|
[Android] Room (4) | 2023.11.21 |
[Android] RecyclerView Divider추가(구분선 추가) (0) | 2023.07.18 |
[Android] getExternalStorageDirectory() deprecated (0) | 2023.05.24 |
[Android Studio] AVD 실행시 no longer exists 에러 (0) | 2023.05.15 |
댓글