Autore Topic: Edittext con 2 cifre decimali  (Letto 1453 volte)

Offline Emma

  • Nuovo arrivato
  • *
  • Post: 9
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Edittext con 2 cifre decimali
« il: 01 Marzo 2012, 12:09:34 CET »
0
Salve,
avete mai provato a creare una EditText che dia la possibilità all'utente si inserire dei valori decimali con solo 2 cifre decimali, ad esempio: 245.58 ?
Sembra banale ma non è  :-P .. Io con
Codice (XML): [Seleziona]
android:inputType="numberDecimal"dico alla EditText che verranno inseriti solo numeri decimali. Ma come blocco le cifre dopo la virgola a 2 ?!
Qualche idea ?
Grazie mille per l'aiuto!!!  ;-)

Offline alexAndroid

  • Utente normale
  • ***
  • Post: 185
  • Respect: +27
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Giò
  • Sistema operativo:
    Ubuntu 11.10; Windows XP
Re:Edittext con 2 cifre decimali
« Risposta #1 il: 01 Marzo 2012, 19:49:58 CET »
+1
Potresti risolvere il problema da codice: ovvero fai inserire comunque una qualsiasi cifra con tante cifre dopo la virgola e poi tronchi tale valore alle prime due cifre decimali.
Un altro metodo è controllare tasto-tasto quello che viene inserito, poi quando viene inserito un punto, è necessario controllare che vengano inserite solo altre due cifre.
Sei stato aiutato oppure il tuo problema è stato risolto? Allora premi il tasto THANKS E' un modo utile e carino per ringraziare chi ti è stato di aiuto.

Offline Emma

  • Nuovo arrivato
  • *
  • Post: 9
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Edittext con 2 cifre decimali
« Risposta #2 il: 02 Marzo 2012, 09:04:37 CET »
0
Ciao,

ho risolto nel seguente modo. ;-)
Codice (Java): [Seleziona]
public class MyTextWatcher implements TextWatcher{
       
        private EditText editText;

        public TwoDecimalTextWatcher(EditText editText) {
               
                super();
                this.editText = editText;
        }
       
        @Override
        public void afterTextChanged(Editable s) {
               
                String sString = s.toString();
                BigDecimal b = new BigDecimal(sString);
                b = b.setScale(2, BigDecimal.ROUND_CEILING);
                //Alernativa
//              DecimalFormat df = new DecimalFormat("#.##");
//              String sStringFormattata =  df.format(Double.parseDouble(sString));
                String[] ar = sString.split("\\.");
               
                if (ar != null && ar.length > 1 && ar[1].length() > 2) {
                               
                        editText.setText(b.toString());
                }
        }
}
applicandola nel seguente modo:
Codice (Java): [Seleziona]
myEditText.addTextChangedListener(new MyTextWatcher(myEditText));Ovvima se qulcuno individua un modo per farlo non lato java è ben accetto, in modo da snellire la complessità.
Grazie!
 :D