Language/Android
안드로이드(Android) TextWatcher(comma)
준콩이
2013. 3. 8. 13:41
반응형
안드로이드 EditText에서 글 입력 시 이벤트를 설정하여 함수를 실행할 수 있습니다.
아래는 소스는 숫자 입력 시 3자리마다 컴마(comma)를 출력/삭제하는 예제입니다.
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); EditText e = new EditText(this); e.addTextChangedListener(new CustomTextWatcher(e)); }
package h5bak.com; import java.text.DecimalFormat; import android.text.Editable; import android.text.Selection; import android.text.TextWatcher; import android.widget.EditText; public class CustomTextWathcer implements TextWatcher { @SuppressWarnings("unused") private EditText mEditText; String strAmount = ""; // 임시 저장값 (콤마) public CustomTextWathcer(EditText e) { mEditText = e; } @Override public void afterTextChanged(Editable s) { // TODO Auto-generated method stub } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // TODO Auto-generated method stub } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { //텍스트가 변경될때마다 실행 if (!s.toString().equals(strAmount)) { // StackOverflow 방지 strAmount = makeStringComma(s.toString().replace(",", "")); mEditText.setText(strAmount); Editable e = mEditText.getText(); Selection.setSelection(e, strAmount.length()); } } protected String makeStringComma(String str) { // 천단위 콤마 처리 if (str.length() == 0) return ""; long value = Long.parseLong(str); DecimalFormat format = new DecimalFormat("###,###"); return format.format(value); } }
--------------------------------------------------------------------------------------------
반응형