본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[android] how to add comma in the EditText.

by 돼지왕 왕돼지 2013. 12. 30.
반응형


 android, how to add comma in the EditText.  


[android] how to add comma in the EditText.


1. xml 상 EditText 에 , 를 입력할 수 있게 한다. ( android:inputType = "numberDecimal" 로 가정 )

<item name="android:digits">"0123456789.,"</item>


2. EditText 에 TextWatcher 추가

mEditText.addTextChangedListener( mEditTextTextWatcher );


private TextWatcher mTextTextWatcher = new TextWatcher() {

@Override

public void onTextChanged(CharSequence s, int start, int before, int count) { }

@Override

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

@Override

public void afterTextChanged(Editable s) {

addSeparator( mEditText, this );

}

};


private void addSeparator( EditText editText, TextWatcher watcher ){

Editable s = editText.getEditableText();

if ( TextUtils.isEmpty( s.toString() ) ) return;

editText.removeTextChangedListener( watcher );

s.replace( 0, s.length(), getCommaSeparatedString( s ) );

editText.addTextChangedListener( watcher );

}

private String getCommaSeparatedString( Editable editable ){

NumberFormat formatter = new DecimalFormat( "###,###.##" );

return formatter.format( Double.parseDouble( editable.toString().replace( ",", "" ) ) );

}


완벽한 녀석은 아니다. 약간의 debugging 과 소스 수정은 필요하다. ( 소수점 이하에 0 을 입력할 경우 등에 대한 처리 ) 여튼 저런 방식으로 하면 된다.






반응형

댓글