Blog de conocimiento gratuito: linux, programación, open source, bases de datos, android, frameworks, web e informática en general.
Hoy vamos a ver cómo adjuntar o asociar información (como un objeto, una cadena, etcétera) a una vista o View de Android para poder obtenerla más tarde.
Es decir, vamos a guardar un trozo de información o una variable dentro de un objeto de tipo View, usando el método setTag
para establecerlos, y getTag
para obtenerlos.
También vamos a ver cómo declarar los id a utilizar, pues debemos ser cuidadosos con la declaración de los mismos al usar getTag y setTag en Android.
Por cierto, si eres desarrollador web o conoces JavaScript, estas funciones son parecidas a los atributos data.
Podemos invocar a setTag
en cualquier objeto de tipo View
, es decir, un TextView, EditText, etcétera. La sintaxis es:
objeto.setTag(id, variable);
En donde:
id
: Es un id que debemos declarar en un archivo XML y al que se puede acceder desde R.id
variable
: una variable de cualquier tipoPara usar setTag
debemos declarar valores en un archivo XML. Por ejemplo, yo he declarado los míos en un archivo ubicado en res/values/ids.xml
Esto es muy importante, ya que si invocamos a setTag
sin indicar un id definido de esta forma, se generará una excepción.
Cuando lo hemos definido, podemos asociarle información a una View. Por ejemplo:
Dentro del ejemplo estamos declarando un nuevo EditText
. En mi caso es uno dinámico, pero también es válido si fue obtenido con findViewById
.
Después invoco a setTag
pasándole el id, y el valor. En este caso, la variable talla
es una cadena.
Nota: puedes invocar a setTag
cuantas veces quieras, simplemente define más ids.
Ya hemos asociado información a una vista, ahora veremos cómo recuperarla. En la mayoría de listeners (por ejemplo, en el click de un botón) se nos pasa un objeto de tipo View; para recuperar el valor hacemos lo siguiente:
Así se recuperaría la información dentro de un listener, obviamente en este caso deberíamos haber agregado una tag a buttonGuardarPackingList
anteriormente.
Si tu elemento es dinámico o lo obtienes de otra forma, puedes recuperar el valor así:
En ambos casos tienes que hacer un casteo; como guardamos una cadena lo convertimos a String
, si guardas otro tipo de dato simplemente realiza la conversión adecuada.
No olvides que debes obtener el valor usando el mismo id, en este caso utilicé R.id.etiqueta_talla
tanto para invocar a setTag
como a getTag
.
Así es como podemos asociar información a las vistas con Android, aunque claro, esto será en pocas ocasiones, pues siempre es mejor usar por ejemplo un RecyclerView con un adaptador.