Tecnologia do Blogger.
RSS

Re: [androidbrasil-dev] Formatar EditText com virgula

Segue como eu resolvi:

Se alguém tiver uma forma mais fácil manda ai.
Pode ser uma grande gambiarra mas funciona.

**********
private String current = "";

txtPreco.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
 // TODO Auto-generated method stub
}

public void beforeTextChanged(CharSequence s, int start, int count, int after) {
// TODO Auto-generated method stub
}
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(",", "");
**********

Maicon Strey
Novo Hamburgo - RS - Brasil
------------------
http://maicon.strey.nom.br/blog/ 
http://maicon.strey.nom.br/blog/netiqueta/ 
Linux user: #525086
------------------



On Wed, Apr 25, 2012 at 13:16, Felipe Aron <felipearon@gmail.com> wrote:
Galera, tenho um EditText com a seguinte estrutura:

<EditText
        android:id="@+recto_financeiro/edtPagoAVista"
        android:layout_width="160dp"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_below="@+recto_financeiro/tvDeveValor"
        android:inputType="numberDecimal"
        android:digits="0123456789.,"
        android:layout_marginRight="4dp" />

Estou querendo aplicar uma máscara monetária, para o valor 1250.00 ficar 1.250,00. (Trocar ponto por virgula)

Até onde entendi preciso criar um TextWatcher para isso, mas não faço ideia de como adicionar tal máscara.

Outra questão é, como tratar o valor real para cálculos? O valor apresentado ficará 1.250,00 - porém para efeito de calculo deve pegar 1250.00. Como fazer isso?

Agradeço a ajuda desde já.
 
--
Analista-Programador


  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

0 comentários:

Postar um comentário