Tecnologia do Blogger.
RSS

Re: [androidbrasil-dev] Formatar EditText com virgula

Esses links podem ajudar a simplificar:



Em 25 de abril de 2012 16:31, Felipe Aron <felipearon@gmail.com> escreveu:
Fala ai Maicon blz?!

Cara valeu pela dica. Vou tratar aqui no projeto... mas cara, que "pé no saco" isso ein... deveria ter algo simples pra tratamento né?! :D

Valeu amigo.

Em 25 de abril de 2012 15:43, Maicon Strey <mstrey@gmail.com> escreveu:

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





--
Analista-Programador


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

0 comentários:

Postar um comentário