2011-02-21 23 views
7

Actualmente estoy transfiriendo un administrador de bases de datos a Android y, por motivos de rendimiento, me gusta para actualizar solo las propiedades que se han modificado. Estoy intentando hacer esto con addTextChangedListener para agregar entradas modificadas a una lista, pero mi programa nunca ingresa ninguno de sus métodos.Android EditText y addTextChangedListener

EditText Et = (EditText) Editors.get(Prop.Name); 
Et.addTextChangedListener(new TextWatcher() { 
    @Override 
    public void afterTextChanged(Editable s) { 
     // 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 onTextChanged(CharSequence s, int start, int before, int count) { 
     // TODO Auto-generated method stub 
     if(Prop.GetType() == Property.PROPTYPE.num) { 
      float f = Float.parseFloat(s.toString()); 
      Prop.FromString(f); 
     } 
     else { 
      Prop.FromString(s.toString()); 
     } 
     propertiesToUpdate.add(Prop); 
}); 
Et.setText(Prop.ToString()); 
+1

¿Falta una} al final de onTextChanged? – banzai86

+0

El código está incompleto para entender su problema. ¿Se edita el texto dentro de la lista? – Shardul

+0

http://stackoverflow.com/questions/6270484/how-to-remove-all-listeners-added-with-addtextchangedlistener – max4ever

Respuesta

4

¿Por qué están obteniendo la instancia de EditText de esta manera? Es parte de su diseño de la actividad por lo que debe conseguir que algo como esto

EditText Et = (EditText) findViewById(R.id.your_id); 

Creo que el problema es que usted está sosteniendo una referencia a un EditarTexto que no pertenecen a su diseño de Actividad por lo que está adjuntando el oyente a la vista equivocada.