У меня есть EditText, в котором пользователь должен ввести число, включая десятичные знаки, и я хочу, чтобы к входному числу автоматически добавлялся разделитель тысяч. Я пробовал несколько других методов, но некоторые не позволяют использовать числа с плавающей запятой, поэтому я придумал этот код, который работает хорошо, только то, что ввод строки не редактируется в реальном времени до единицы с возможными тысячами разделителей, и ошибки, похоже, связаны с s.replace();
am2 = new TextWatcher(){
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
public void onTextChanged(CharSequence s, int start, int before, int count) {}
public void afterTextChanged(Editable s) {
if (s.toString().equals("")) {
amount.setText("");
value = 0;
}else{
StringBuffer strBuff = new StringBuffer();
char c;
for (int i = 0; i < amount2.getText().toString().length() ; i++) {
c = amount2.getText().toString().charAt(i);
if (Character.isDigit(c)) {
strBuff.append(c);
}
}
value = Double.parseDouble(strBuff.toString());
reverse();
NumberFormat nf2 = NumberFormat.getInstance(Locale.ENGLISH);
((DecimalFormat)nf2).applyPattern("###,###.#######");
s.replace(0, s.length(), nf2.format(value));
}
}
};