2012-01-02 13 views
12

Ho un EditText. Quando clicco su di esso, diventa focalizzabile. Digiterò il testo di input da inserire in EditText. Voglio implementare un listener per EditText, in modo che quando smetto di digitare, dovrebbe salvare automaticamente quel testo nel database invece di avere un pulsante. Come avere un listener per EditText per ascoltare che la scrittura è stata interrotta o no?Implementazione di Text Watcher per EditText

risposta

14

set EditText imeOption

editText.setImeOptions(EditorInfo.IME_ACTION_DONE); 

Usando qualcosa di simile,

editText.setOnEditorActionListener(new TextView.OnEditorActionListener() { 
    @Override 
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
     if (actionId == EditorInfo.IME_ACTION_DONE) { 
      // Specify your database function here. 
      return true; 
     } 
     return false; 
    } 
}); 

In alternativa, è possibile utilizzare l'interfaccia OnEditorActionListener per evitare la classe interna anonima.

+0

È anche possibile chiudere la tastiera virtuale dopo aver fatto clic su Done restituendo false invece di restituire true. – Youness

38

Provare così.

EditText et = (EditText)findViewById(R.id.editText); 
Log.e("TextWatcherTest", "Set text xyz"); 
et.setText("xyz"); 

et.addTextChangedListener(new TextWatcher() { 
    @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) { 
     Log.e("TextWatcherTest", "afterTextChanged:\t" +s.toString()); 
    } 
}); 
+0

Questa dovrebbe essere la risposta giusta. –

4

aggiungere questo alla tua EditText

et1.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 

      // TODO Auto-generated method stub 
     } 

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

      // TODO Auto-generated method stub 
     } 

     @Override 
     public void afterTextChanged(Editable s) { 

      // TODO Auto-generated method stub 
     } 
    });