Autore Topic: setText in EditText (inputType nuumeric)  (Letto 1010 volte)

Offline ragnonerodocet

  • Nuovo arrivato
  • *
  • Post: 7
  • Respect: 0
    • Mostra profilo
setText in EditText (inputType nuumeric)
« il: 21 Settembre 2012, 10:29:49 CEST »
0
Buongiorno,

problema semplice credo, ma che non riesco a risolvere in alcun modo.

Ho creato un EditText in un'Activtty specificando che:

android:inputType="number"
android:maxLength="1"

Infatti, alla pressione sulla stessa, appare la tastiera numerica.

Ora vorrei che qualsiasi numero fosse scritto nell'EditText, esso si trasformasse in uno 0, mediante un TextWatcher.

Ho provato all'interno di afterTextChanged a cambiare il testo, partendo da una String rappresentante lo zero ("0") o a partire da un int poi trasformato in String con valueOf (tira fuori una StackOverflowException in entrambi i casi).

Nulla da fare: voi come fareste?

Grazie dell'attenzione, buona giornata.

Offline blackgin

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1387
  • Respect: +164
    • Google+
    • blackgins
    • blackginsoft
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Mac OSX 10.8
Re:setText in EditText (inputType nuumeric)
« Risposta #1 il: 21 Settembre 2012, 13:39:51 CEST »
0
Posta il codice della prova con il TextWatcher.
Postate il LogCat LogCat LogCat LogCat LogCat

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:setText in EditText (inputType nuumeric)
« Risposta #2 il: 21 Settembre 2012, 13:47:59 CEST »
0
Nulla da fare: voi come fareste?

Prima di cambiare il numero inserito e mettere uno 0, controllerei che non ci sia già uno 0 ;) Altrimenti lui continua a cambiare il testo senza fermarsi mai.

Offline ragnonerodocet

  • Nuovo arrivato
  • *
  • Post: 7
  • Respect: 0
    • Mostra profilo
Re:setText in EditText (inputType nuumeric)
« Risposta #3 il: 21 Settembre 2012, 14:33:12 CEST »
0
Codice (Java): [Seleziona]
list[i].addTextChangedListener(new TextWatcher() {

                                        private String DEFAULT_VALUE = "0";

                                        @Override
                                        public void onTextChanged(CharSequence s, int start, int before, int count) {
                                                editText.setText(DEFAULT_VALUE);
                                        }

                                        @Override
                                        public void beforeTextChanged(CharSequence s, int start, int count, int after) {}

                                        @Override
                                        public void afterTextChanged(Editable s) {
                                               
                                        }
                                });

Offline ragnonerodocet

  • Nuovo arrivato
  • *
  • Post: 7
  • Respect: 0
    • Mostra profilo
Re:setText in EditText (inputType nuumeric)
« Risposta #4 il: 24 Settembre 2012, 11:12:42 CEST »
0
Eccomi ancora.

Ho risolto il problema iniziale: ora il mio EditText si comporta così:

se viene inserito un numero qualsiasi diverso da 0, setta il valore a 0, altrimenti lascia così com'è.

In questo modo:

Codice (Java): [Seleziona]
list[i].addTextChangedListener(new TextWatcher() {

                                        private String DEFAULT_VALUE = "0";

                                        @Override
                                        public void onTextChanged(CharSequence s, int start, int before, int count) {}

                                        @Override
                                        public void beforeTextChanged(CharSequence s, int start, int count, int after) {}

                                        @Override
                                        public void afterTextChanged(Editable s) {
                                                if (!s.toString().equals(DEFAULT_VALUE.toString())) {
                                                        myEditText.setText(DEFAULT_VALUE);
                                                }
                                        }
                                });

Il tutto funziona magnificamente, ma ora mi chiedo: se invece di "0", volessi settare il valore a "pippo", immagino dovrei cambiare l'inputType dell'EditText, già definito nell'xml col valore numeric.

private String DEFAULT_VALUE = "pippo"

e all'interno dell'if dentro a afterTextChanged, inserisco, prima di settare il valore a pippo

myEditText.setInputType(InputType.TYPE_CLASS_TEXT);

eppure, come eccezione, ricevo una NumberFOrmatException: invalid valure "X", come se non prendesse il comando precedente.

Come faccio a runtime a cambiare l'inputType della mia EditText?