이준빈은 호박머리

IT 프로그래밍 개발 정보 블로그, 이준빈은 호박머리 입니다.

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);
    }
 
}


--------------------------------------------------------------------------------------------

반응형