2011-01-31 15 views
7

Tengo un formulario con muchos EditTexts, y cuando presiono un cierto botón, necesito recuperar todos estos controles y ponerlos en un HashMap para que la clave sea el nombre (key1 int en el siguiente código)Cómo recuperar el ID xml de EditText

<EditText android:id="@+id/key1" 
     style="@style/keys" /> 

y el valor, cualquiera que sea el texto que ingrese el usuario.

Mi pregunta es, ¿cómo puedo recuperar el nombre de EditText para las claves de Hashmap? getId() devuelve un número.

Gracias

+1

¿Para qué planificas usar ese nombre? Los métodos como 'findViewById()' aceptan el ID 'int' como parámetro. –

+0

¿De quién findViewById? Probé los de EditText, ScrollView y form the Layout y todos ellos devuelven una referencia a EditText (por ejemplo, [email protected]). – xain

Respuesta

2

Finalmente lo resolví usando android: tag y getTag()

3

Android genera un asa para que Vista en R.java cada vez que genere el proyecto. Por ejemplo, una vez que construyes puedes acceder a tu EditText llamando al R.id.key1. No tiene que almacenar los identificadores en ninguna parte porque puede acceder a la identificación directamente en cualquier momento en su código. Con esta identificación puede llamar al findViewById() como dave.c menciona para obtener cualquier vista que necesite de su XML.

+0

Gracias por su respuesta. ¿Qué pasa si tengo que enviar la clave/valor del par a un servicio web? En tal caso, necesito que la clave sea siempre la misma, y ​​preferiblemente una "legible", como la que se hace en los formularios web. – xain

+1

@Xain: si necesita que siempre sea el mismo, debe asegurarse de no cambiarlo. Usted como desarrollador tiene control total sobre la identificación. Dicho esto, evitaría usar la identificación para obtener la clave de un servicio web. En cambio, usaría algo así como una cadena pública estática agrupada con otras claves de servicios web, tal vez en una clase estática como WebServiceKeys. Los identificadores de vista no son para este propósito. – McStretch

+0

Bueno, no tienes un control ** completo sobre la ID ya que Android genera la identificación 'int' para ti, y esto puede cambiar a medida que agregas y eliminas elementos. Estoy de acuerdo en que @xain debe mantener sus propias claves para estas entradas. –

0

En realidad, getId() es el valor entero de los identificadores de los componentes, es el mismo que se describe en la clase generada R.

¿Necesita el nombre real tal como lo escribió? Si necesita solo una referencia, el valor int es suficiente.

+0

Gracias por su respuesta, por favor lea el hilo en la respuesta anterior. – xain

Cuestiones relacionadas