public void onTextChanged(CharSequence s, int start, int before, int count) {
if(!s.toString().equals(current)){
txtPreco.removeTextChangedListener(this);
String precoString = s.toString().replaceAll("[R$.]", "");
precoString = precoString.replaceAll(",", ".");
Double precoDouble = 0.0;
if (s.length() > current.length()){
precoDouble = Double.valueOf(precoString);
precoDouble = precoDouble * 10;
}
if (s.length() < current.length()){
precoDouble = Double.valueOf(precoString);
precoDouble = precoDouble / 10;
}
precoString = precoDouble.toString();
NumberFormat formatoReal = NumberFormat.getCurrencyInstance(new Locale("pt", "BR"));
String formatado = formatoReal.format(Double.valueOf(precoString));
txtPreco.setText(formatado);
current = formatado;
txtPreco.setText(formatado);
txtPreco.setSelection(formatado.length());
txtPreco.addTextChangedListener(this);
}
}
});
**********
Pra voltar pro formato Double:
**********
String precoDouble = txtPreco.getText().toString().replaceAll("[R$.]", "");
precoDouble = precoDouble.replaceAll(",", ".");
NumberFormat formatoDouble = NumberFormat.getNumberInstance(new Locale("en", "US"));
String formatado = formatoDouble.format(Double.valueOf(precoDouble)).replaceAll(",", "");
**********