CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: elmegio con ben 2 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: carotix con ben 11 Thanks ricevuti negli ultimi sette giorni
Utente del mese: megthebest con ben 24 Thanks ricevuti nell'ultimo mese

Visualizzazione dei risultati da 1 a 10 su 10
Discussione:

TransformationMethod

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Androidiano


    Registrato dal
    Aug 2010
    Messaggi
    229

    Ringraziamenti
    0
    Ringraziato 5 volte in 4 Posts
    Predefinito

    TransformationMethod

    Volevo creare un esempio che dato un EditText man mano che si inserivano delle lettere queste cambiavano in asterischi così come avviene quando si inserisce una password però non risco proprio a capire come funziona questo metodo, qualcuno mi può aiutare ? mi pare che c'era un esempio di questo tipo nelle APIDemo ma non lo trovo più (o forse ricordo male...)

  2.  
  3. #2
    Androidiano


    Registrato dal
    Aug 2010
    Messaggi
    229

    Ringraziamenti
    0
    Ringraziato 5 volte in 4 Posts
    Predefinito

    Ragazzi ho scritto questo codice ma non funziona qualcuno potrebbe dargli un'occhiata giusto per capire se il concetto di base è giusto e dove sbaglio ?
    x
     
    1
    public class EditText extends Activity {
    2
        /** Called when the activity is first created. */
    3
        @Override
    4
        public void onCreate(Bundle savedInstanceState) {
    5
            super.onCreate(savedInstanceState);
    6
            setContentView(R.layout.main);
    7
            // Otteniamo il riferimento alla EditText di input
    8
            final EditText inputText = (EditText)findViewById(R.id.inputText);
    9
            inputText.setOnKeyListener(new OnKeyListener(){
    10
                @Override
    11
                public boolean onKey(View v, int keyCode, KeyEvent event) { 
    12
                    TransformationMethod tra = new TransformationMethod(){
    13
                        @Override
    14
                        public CharSequence getTransformation(CharSequence source,View view) {
    15
                            CharSequence testo = source.toString().replace(source, "*");
    16
                            // TODO Auto-generated method stub
    17
                            return testo;
    18
                        }
    19
    20
                        @Override
    21
                        public void onFocusChanged(View view,
    22
                                CharSequence sourceText, boolean focused,
    23
                                int direction, Rect previouslyFocusedRect) {
    24
                            // TODO Auto-generated method stub
    25
                            
    26
                        }
    27
                    };
    28
                    inputText.setTransformationMethod(tra);
    29
                                    return true;
    30
                }
    31
            });
    32
        }
    33
    }

  4. #3
    Senior Droid L'avatar di Cymon


    Registrato dal
    Jul 2010
    Messaggi
    419

    Ringraziamenti
    7
    Ringraziato 43 volte in 42 Posts
    Predefinito

    Per ora due cose ho notato: se uso la tastiera "reale" del PC o quella "fisica" dell'emulatore l'applicazione crasha. Se invece faccio apparire la qwerty sul touch e uso quella riesco a scrivere le lettere, ma me le da curiosamente in sottolineato
    Per il crash quindi non vorrei che proprio sia un problema di emulazione (o configurazione dell'emulatore) mentre per il resto dovrei guardarci con un po' più di impegno.

    Ah, rimane il fatto che secondo me chiamare la tua classe di test EditText come la classe android può portare solo guai...
    Ultima modifica di Cymon; 21-11-10 alle 12:08
    La mia katana: Slackware 13.1
    La mia wakizashi: Acer A1 Liquid con Android 2.1 Eclair
    Il mio sito: Follow the rabbit (con la sua App )

  5. #4
    Androidiano


    Registrato dal
    Aug 2010
    Messaggi
    229

    Ringraziamenti
    0
    Ringraziato 5 volte in 4 Posts
    Predefinito

    Cymon sei sempre il primo a rispondere :-)
    Quando hai un attimo ti prego me la guardi? giusto per capire dove sbaglio e soprattutto se finalmente ho imparato ad interpretare il javadoc! Che anocora ho qualche problemino concettuale. GRAZIE!

  6. #5
    Senior Droid L'avatar di Cymon


    Registrato dal
    Jul 2010
    Messaggi
    419

    Ringraziamenti
    7
    Ringraziato 43 volte in 42 Posts
    Predefinito

    Quote Originariamente inviato da mimmog Visualizza il messaggio
    Cymon sei sempre il primo a rispondere :-)
    Rispondere al thread? Oooh, quello è facile.
    Rispondere con qualcosa di utile? Eh, quello è più complicato

    Quando hai un attimo ti prego me la guardi? giusto per capire dove sbaglio e soprattutto se finalmente ho imparato ad interpretare il javadoc! Che anocora ho qualche problemino concettuale. GRAZIE!
    Innanzitutto se il tuo desiderio è solo riuscire ad avere a disposizione un campo password con gli asterischini, invece di scrivere tutto sto codice è sufficiente inserire la property
    1
     
    1
    android:password="true"

    nel XML del layout per l'EditText.

    Ho provato comunque a reimplementare la roba, ma non appare così banale. Mi sembra però che tu fai un uso fin troppo esteso di listener quando in realtà non sono necessari. Il corrispettivo java di androidassword="true" infatti è semplicemente

    1
     
    1
    inputText.setTransformationMethod(new PasswordTransformationMethod());


    considerando che PasswordTransformationMethod è una classe già implementata nel SDK.

    Quindi direi che, in ogni caso, per realizzare quello che vuoi, dovrebbe essere sufficiente implementare il metodo di trasformazione e poi lasciar gestire a android gli eventi... provandoci, però, sono giunto alla conclusione che non è affatto banale.
    La mia katana: Slackware 13.1
    La mia wakizashi: Acer A1 Liquid con Android 2.1 Eclair
    Il mio sito: Follow the rabbit (con la sua App )

  7. #6
    Androidiano


    Registrato dal
    Aug 2010
    Messaggi
    229

    Ringraziamenti
    0
    Ringraziato 5 volte in 4 Posts
    Predefinito

    Si lo avevo visto quel metodo però mi volevo cimentare con qualcosa di diverso magari digitare una lettera e farla trasformare in un altra mentre la digitavo.... però forse ho scelto qualcosa di un pochino troppo complicato..

  8. #7
    Senior Droid L'avatar di dhalia


    Registrato dal
    Oct 2010
    Messaggi
    314

    Ringraziamenti
    3
    Ringraziato 27 volte in 26 Posts
    Predefinito

    Quote Originariamente inviato da mimmog Visualizza il messaggio
    Si lo avevo visto quel metodo però mi volevo cimentare con qualcosa di diverso magari digitare una lettera e farla trasformare in un altra mentre la digitavo.... però forse ho scelto qualcosa di un pochino troppo complicato..
    Ciaooo siamo sempre i soliti tre/quattro dell'ave maria :-D
    Devo dire che per imparare é un esercizio carino senza usare il password come attributo :-D io avevo fatto in java dei filtri per le jtextfield che consistevano in dei modelli che dovevano esser verificati prima della visualizzazione del carattere visivo :-) appena ho un po' di codice che ho scritto te lo faccio vedere, magari in android é simile! Ah mimmog ho preso il galaxy s!
    Favolosooooo!

    Ps: io iniziato la mia prima app per impratichirmi.. Quando sará pronta te lo dico :-)
    Ultima modifica di dhalia; 23-11-10 alle 22:38

  9. #8
    Senior Droid L'avatar di dhalia


    Registrato dal
    Oct 2010
    Messaggi
    314

    Ringraziamenti
    3
    Ringraziato 27 volte in 26 Posts
    Predefinito

    Allora tra i filtri che avevo fatto questo è il più semplice e serve a limitare l'inserimento di un carattere a "s" | "S" | "N" | "n"..
    Questo va bene per le jtextfield di swing che ovviamente android non usa
    ora sarebbe da guardare nell'api di android se la EDITEXT ha un sistema simile
    e se si, hai già qui l'ottica di come implementarlo spiegato davvero easy

    39
     
    1
    package ElementiBase;
    2
    3
    import javax.swing.text.BadLocationException;
    4
    import javax.swing.text.PlainDocument;
    5
    6
    /**
    7
     * Classe che si occupa di filtrare la scelta a "s" "S" "n" "N"
    8
     * @author Simone Casagranda
    9
     */
    10
    public class LimitatoreChoiceTextField extends PlainDocument{
    11
        private int numMaxCaratteri;
    12
    13
        /*
    14
         * Costruttore della classe che prende un intero che rappresenterà il numero massimo
    15
         * di caratteri inseribili nella Textfield
    16
         */
    17
        public LimitatoreChoiceTextField(int numMaxCaratteri) {
    18
            this.numMaxCaratteri = numMaxCaratteri;
    19
        }
    20
    21
        private boolean isValid(String s){
    22
            if(s.equals("s")||s.equals("S")||s.equals("N")||s.equals("n"))
    23
                return true;
    24
            else return false;
    25
        }
    26
    27
        /*
    28
         * Sovrascrittura della insertString, che permette di visualizzare/inserire testo
    29
         * fino a quando non si raggiunge il limite massimio di caratteri possibili
    30
         * all'interno della Textfield e valutando se i caratteri sono corretti.
    31
         */
    32
        @Override
    33
        public void insertString(int offs, String str, javax.swing.text.AttributeSet a) throws BadLocationException {
    34
            int length = getLength();
    35
            if(length + str.length()<= numMaxCaratteri){
    36
                if(isValid(str))super.insertString(offs, str, a);
    37
            }
    38
        }
    39
    }

  10. #9
    Androidiano


    Registrato dal
    Aug 2010
    Messaggi
    229

    Ringraziamenti
    0
    Ringraziato 5 volte in 4 Posts
    Predefinito

    We dhalia! Auguri per lo splendido acquisto,sono sicuro che ti troverai splendidamente :-) e grazie per il codice ora me lo studio un pò. Nel frattempo sono arrivato al capitolo 7 sulle animazioni ed i menu poi voglio fare l'8 e dare una ripassata di tutto prima di terminare il libro...magari mi cimenterò anche io con qualche applicazioncina ;-) intanto ho comprato il mini pc dell'acer precisamente ho preso il modello 8172t con processore i3-380um e 4gb di ram costa 700€ però devo dire che è piccolo,leggero,veloce e riesce a sopportare il peso di eclipse ed emulatore insieme in maniera ottima. Ciao un abbraccio!

  11. #10
    Senior Droid L'avatar di dhalia


    Registrato dal
    Oct 2010
    Messaggi
    314

    Ringraziamenti
    3
    Ringraziato 27 volte in 26 Posts
    Predefinito

    Quote Originariamente inviato da mimmog Visualizza il messaggio
    We dhalia! Auguri per lo splendido acquisto,sono sicuro che ti troverai splendidamente :-) e grazie per il codice ora me lo studio un pò. Nel frattempo sono arrivato al capitolo 7 sulle animazioni ed i menu poi voglio fare l'8 e dare una ripassata di tutto prima di terminare il libro...magari mi cimenterò anche io con qualche applicazioncina ;-) intanto ho comprato il mini pc dell'acer precisamente ho preso il modello 8172t con processore i3-380um e 4gb di ram costa 700€ però devo dire che è piccolo,leggero,veloce e riesce a sopportare il peso di eclipse ed emulatore insieme in maniera ottima. Ciao un abbraccio!
    Mitticoooo ti sei preso una miniastronave! hehe
    Cmq vedo che la pensiamo uguale ahaha al capitolo 8 mi son illuminato e ho pensato a un'app che mi fa fare un po' il ripasso delle cose più importanti(anche gli adapter che ci hanno fatto un po' imprecare ).
    Il problema è che ciò che sto sviluppando, va sempre oltre le mie possibilità ahaha e allora i capitoli post 8 mi serviranno tutti da quel che ho intravisto..
    Io ho inizio domani con il 9, il capitolo 8 è davvero molto corposo ma finalmente potrai vedere esempi un po' più vicini a esigenze che ci son in ogni programma! ma tranqui, eccetto i provider che dovrò digerirli bene, il resto è fattibilissimo

    Ribadisco però che il codice sopra va bene solo per swing da quel che so io hehe però è un modo per pigliare i caratteri appena post inserimento..
    Ho avuto questo problema quando ho iniziato a fare un gestionale, dove dovevo filtrare i dati inseriti:
    - impedendo certi caratteri
    - vincolando la scrittura
    - accettando solo un numero di dati
    Insomma se ti dovesse servire un giorno in java, ti risparmi un po' di rognette come dover elaborare i dati dopo che l'utente li abbia visti a schermo :P
    Un abbraccione anche a te! diamoci sotto con sto android!!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy