No se puede obtener la cadena que se ingresa en Editar texto en ExpandableListView (no es el problema de enfoque habitual)

Oye, básicamente tengo una pantalla de inicio de sesión/registro para una aplicación y tengo que hacerlo usando un ExpandableListView como se muestra.

Según la posición del niño en un grupo, he inflado diferentes puntos de vista. Entonces, para las posiciones 0 y 1, he inflado 2 cuadros EditText diferentes.

Mi problema es que no puedo obtener el texto escrito en ambos cuadros.

El cuadro me permite escribir continuamente, pero cuando hago clic en el botón Iniciar sesión, las cadenas que obtengo de los cuadros de nombre de usuario y contraseña usando getText son nulas.

Captura de pantalla de inicio de sesión http://img801.imageshack.us/img801/5544/shot000005w.png El nombre de usuario Toast está en blanco http://img21.imageshack.us/img21/3825/shot000006y.png La contraseña Toast está en blanco http://img542.imageshack.us/img542/8804/shot000007.png

Aquí está obtener getChildView de CustomExpandableAdapter:

public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
   v = null;

   position = 0;
   position=getChildId(groupPosition, childPosition);

   if(position==0) //draw the username editbox
   {
    v = inflater.inflate(R.layout.username, parent, false);
    Element c = (Element)getChild( groupPosition, childPosition );
    username = (EditText)v.findViewById( R.id.username);

    if( username != null )          
         username.setHint(c.getElement());

    }
   else if(position==1)
   {
       if(convertView == inflater.inflate(R.layout.password, parent, false))
        return convertView;
       v = inflater.inflate(R.layout.password, parent, false);
       convertView = inflater.inflate(R.layout.password, parent, false);
        Element c = (Element)getChild( groupPosition, childPosition );
        password = (EditText)v.findViewById( R.id.password);
    if( password != null )          
         password.setHint(c.getElement());

   }
   else if (position>1023 && position<1028)
   {
        v = inflater.inflate(R.layout.child_row, parent, false);
        Element c = (Element)getChild( groupPosition, childPosition );
        et = (EditText)v.findViewById( R.id.et);


    if( et != null )            
         et.setHint(c.getElement());
   }

   else if(position==1028)
    {

        v = inflater.inflate(R.layout.gender, parent, false);
        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
          context, R.array.gender, android.R.layout.simple_spinner_item );
        adapter.setDropDownViewResource( android.R.layout.simple_spinner_dropdown_item );
        s = (Spinner) v.findViewById( R.id.spinner_gend );
        s.setAdapter( adapter );
    }

   else if(position==2)  //Forgot Button
   {
       v = inflater.inflate(R.layout.forgot, parent, false);
       Button forgot = (Button)v.findViewById(R.id.fpb);
       forgot.setOnClickListener(this);


   }


   else if(position==3)  //Sign-in Button
   {
       v = inflater.inflate(R.layout.sign_in_button, parent, false);
       ImageButton sign_in = (ImageButton)v.findViewById(R.id.sign_in_button);
       sign_in.setOnClickListener(this); 

}
   return v;
}

y más adelante en el código tengo el onClick del botón Iniciar sesión:

case R.id.sign_in_button: {
        String user_name = username.getText().toString();
        String pass_word=password.getText().toString();
        Toast.makeText(context,"u:"+ user_name, 3000).show();
        Toast.makeText(context, "p:"+pass_word, 3000).show();
                    //Other unrelated Database Code


    }

Aquí los Toasts siempre muestran solo u: y p:

¡Alguien ayuda!

preguntado el 28 de julio de 12 a las 11:07

En primer lugar, mi sugerencia es intentar usar el método getText () para editar texto e ingresar los datos. En segundo lugar, deseo preguntarle cómo resolvió el problema de escribir texto dentro del texto de edición dentro de la vista de lista expandida. Todavía estoy atascado con este problema y también, si es posible, ¿puede publicar su código para poder aprender de él porque también necesito crear un formulario dinámico con editText y spinners que se repite según la cantidad de registros que se ingresarán? Por favor, ayúdenme si puedes porque mi trabajo depende de ello. No estoy creando un nuevo tema porque hay demasiadas restricciones y es más o menos probable que sea -

@ user1435153 Hola, gracias, pero usé un TextWatcher. Consulte esta publicación para ver cómo resolver los problemas con un cuadro EditText en un ExpandableListView (o un ListView) (codificadoresmusings.wordpress.com/2012/08/01/…) -

1 Respuestas

Acabo de usar un TextWatcher (que no funcionaba correctamente antes de esto) El código está aquí:

@Override
public void afterTextChanged(Editable s) {

    user_name=s.toString();
}
@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


}

Respondido 01 ago 12, 03:08

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.