제가 만들고 있는 것은 일종의 금융계산기인데, EditText로 숫자들을 입력받습니다.
숫자를 입력할 때마다 천단위 콤마를 씌워주고 싶은데,
onTextChanged 함수 안에서 숫자에 DecimalFormat을 씌워주니까 무한 루프에 빠져버리네요.

다른 함수를 찾고 있는데... onKey함수는 하드키패드만 반응하고 소프트키패드엔 반응하지 않네요.


제가 짠 코드입니다.

input1.addTextChangedListener(new TextWatcher()
{
     String CurrentWord;

     private boolean IsValid(CharSequence s)
     {
          // special autorization for empty field
          if (s.length() == 0)
          return true;

          // special autorization for '.', in order to enter .5
          if (s.length() == 1 && s.charAt(0) == '.')
          return true;

          try {
               Double.parseDouble(s.toString());
               return true;
          } catch (Exception e) {
               return false;
          }
     }

     public void afterTextChanged(Editable s) {}

     public void beforeTextChanged(CharSequence s, int start, int count, int after)
     {
          CurrentWord = s.toString();
     } 

     public void onTextChanged(CharSequence s, int start, int before, int count) 
     {
          if (!IsValid(s)) {
               input1.setText(CurrentWord);
               input1.setSelection(start);
          } else {
               inputNum = Double.parseDouble(s.toString());

               // Thousand-separator
               DecimalFormat df = new DecimalFormat();
               DecimalFormatSymbols dfs = new DecimalFormatSymbols();
               dfs.setGroupingSeparator(',');
               df.setDecimalFormatSymbols(dfs);

               input1.setText(df.format(inputNum));
          }
     }
  });



넘버 체크하는 루틴은 http://androidblogger.blogspot.com/2008/12/edittext-numeric-only.html 여기를 보고 했습니다.
onTextChanged안에서 setText하니까 무한루프에 빠져버려요. ;ㅁ;
어떻게 고치면 좋을까요...

 



※ 첫질문입니다. 공지사항 읽었습니다.