Android TAG y el principio DRY

Documentos relacionados
Android y Recursos. Android R.java (fichero)

Android Manejo de Eventos. Rogelio Ferreira Escutia

Que es un Android Intent?

SOLUCIÓN AL LABORATORIO DEL DÍA SÁBADO 29 DE JUNIO DE 2013

ALMACENAMIENTOS DE DATOS EN ANDROID CON SQLITE

Crear un Splash-Screen

Ejercicio 3. Manejo de la Vista y Eventos en Android Ejercicio 3 Curso de Android con Java Derechos Res Dere e c rvados hos Res Gl e obal rva

Manejadores en Android LSUB, GYSC, URJC

PRACTICAS DE ANDROID 12 - Lanzar un segundo "Activity" y pasar parámetros Problema:

Programación en Android LSUB, GSYC, URJC

Ejercicio 4. Manejo de Layouts en Android. Android Con Java. Ejercicio 4. Manejo de Layouts en Android. Curso de Android con Java

En nuestra actividad principal, creamos el objeto vista previa. Este objeto se creará el objeto cámara y volver a la actividad CameraDemo.

Desarrollo de Aplicaciones Criptográficas en Android

Temas. CopyRight emmmnmmma - All rights reserved 2

Ejercicio 16. Mejora de Notificaciones en Android. Android Con Java. Ejercicio 16. Mejora de Notificaciones en Android. Curso de Android con Java

Android Con Java. Ejercicio 2. Ciclo de Vida de las Actividades en Android. Ejercicio 2. Ciclo de Vida de las Actividades en Android

Ejercicio 20. SQLite en Android. Android Con Java. Ejercicio 20. Uso de SQLite en Android. Curso de Android con Java

Ejercicio 18. Configuración de Widgets en Android. Android Con Java. Ejercicio 18. Configuración de Widgets en Android. Curso de Android con Java

Android y Java para Dispositivos Móviles

CODIGO PROYECTO: AppPixelproServicioWeb Proyecto Android - Servicio Web

Programación Android. Alejandro Alcalde. elbauldelprogramador.com

ANEXO 2: Código fuente de la aplicación

Especialista Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles. Plataforma Android. Sesión 1: introducción a Android

Android Creación de una aplicación sencilla: Forwarding - Página 1 -

Activities/Intents en Android LSUB, GSYC, URJC

Tema 2: Diseño de servicios para móviles

14 - Almacenamiento de datos en un archivo de texto en la memoria interna Problema 1:

Android avanzado. Sesión 5: Notificaciones. Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Desarrollo de Aplicaciones para Android

Patricio Olivares. 25 de abril de 2017

Unidad 3. PrimerProyecto. Nuestra primera aplicacio n Android

GUIA DE LABORATORIO N 1

1. INTRODUCCIÓN Acerca de este libro A quién va dirigido

Manual Básico Android Studio

Servicios de la plataforma Android

Intefaz de usuario - Ejercicios

Ejercicio 21. Manejo de Sonido en Android. Android Con Java. Ejercicio 21. Manejo de Sonido en Android. Curso de Android con Java

Desarrollo de Aplicaciones para Android

Interfaz de usuario Layout Vistas Adaptadores Eventos de interacción Estilos y temas

Anexo. Control de errores

INTRODUCCIÓN.

ÍNDICE GENERAL. 5. GUARDAR DATOS CON SharedPreferences... 54

Tareas en segundo plano AsyncTask Thread

10. Gráficos en dos dimensiones

Interfaces de usuario [Entradas en Android]

Android y Java para Dispositivos Móviles

Cursos de orientación profesional

Importar y exportar aplicaciones Para importar proyectos de Android a Android studio

Desarrollo de Aplicaciones para Android

Crear listas personalizadas en Android

TP Nº4 Android - SQLite Fecha Miércoles 2013/08/14 Profesor: Pablo Ulman (Polshu).

Introducción al manejo de Bases de Datos con SQLite. Version Android

Bloque 2. Desarrollo de Aplicaciones en Android

Interfaz de usuario. Índice

CREACIÓN DE NUEVAS ACTIVIDADES

SESIÓN 5 MANEJO DE BASES DE DATOS SQLITE

Anexo C Contenido del CD-ROM

Plataforma Android. Índice

INICIACIÓN A LA PROGRAMACIÓN PARA ANDROID

Práctica 3. Android. Tutorial appfotovoz

Aurelio López Ovando Botón de pánico (App para Android)

Gráficos y multimedia

Introducción a Android

Tecnología de Programación

Interfaces de usuario [Desarrollo de aplicaciones para Android]

Desarrollo de Aplicaciones para Android

Ejercicios - Introducción a Android

Taller Desarrollo. Tecnólogo Informática - 6to Semestre Montevideo

Desarrollo de Aplicaciones para Android

Bienvenido al emocionante mundo del

Programando para Android: una sencilla aplicación

Aplicación móvil para proporcionar información sensible a la ubicación(contexto) 14 de julio de 2013

Desarrollo de un reproductor mp3

Unidad III.- Desarrollo de la interfaz de usuario. Diseño de layouts en Android.

UNA APLICACIÓN DE EJEMPLO: MIS LUGARES

Servicios Basados en Localización (LBS) Tema 6 Desarrollo de aplicaciones en Android

Universitat Oberta de Catalunya. Cuaderno de Viaje. Memoria

Taller Mi Primera Aplicación Android

Servicios Web Android

Giovanny Fernando Vanegas Mendez Docente tutor de la UDFJC: Jonh Freddy Parra Peña

TUTORIAL: GEOLOCALIZACIÓN

MANIPULACIÓN DE VISTAS (VIEW)

Java Herencia vs Interfaces

Sensores de los dispositivos

Qué ofrece Autentia Real Business Solutions S.L?

TALLER DE INICIACIÓN A ANDROID

Desarrollo en Android (v1.0)

UNIVERSIDAD DE GUAYAQUIL FACULTAD DE CIENCIAS MATEMÁTICAS Y FÍSICAS CARRERA DE INGENIERÍA EN SISTEMAS COMPUTACIONALES

Desarrollo de Aplicaciones para Android

Manual Mca006. Manual Mca006 CURSO ANDROID DESARROLLO de APLICACIONES MÓVILES, 24 horas

Java Interfaces y el concepto de simplicidad

Practica. Material Design. lunes 10 de octubre de 16

Desarrollo de Aplicaciones para Android

Entiendo los métodos de Java equals y hashcode

Plataforma Android. Sesión 6: Personalización de componentes. Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Curso de programación en Android. 19/Junio/2012 Ramón Alcarria Augusto Morales

Transcripción:

Android es una plataforma de desarrollo que empieza a tener el sobrenombre de INFINITA en cuanto a las cosas que se pueden hacer, conjunto de APIs soportadas etc. Sin embargo al ser tan grande muchas veces nos centramos en aprender los conceptos avanzados y nos olvidamos un poco de lo más elemental. Vamos a ver un ejemplo sencillo que contiene 3 botones. Vamos a ver el código del Layout : <LinearLayout android:id="@+id/zona" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView

android:id="@+id/texto_1" /> android:id="@+id/boton_1" android:text="@string/boton_1" /> android:id="@+id/boton_2" android:text="@string/boton_2" /> android:id="@+id/boton_3" android:text="@string/boton_3" /> </LinearLayout> El programa que tenemos que construir es sencillo simplemente cuando pulsamos cada uno de los botones el texto contenido en el boton se mostrará en la caja de texto. Vamos a ver el código de la actividad:

package com.arquitecturajava.cambiartextos; import android.app.activity; import android.os.bundle; import android.view.menu; import android.view.view; import android.view.view.onclicklistener; import android.widget.button; import android.widget.textview; import com.example.cambiartextos.r; public class MainActivity extends Activity implements OnClickListener { @Override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); Button boton1 = (Button) findviewbyid(r.id.boton_1); boton1.setonclicklistener(this); Button boton2 = (Button) findviewbyid(r.id.boton_2); boton2.setonclicklistener(this); Button boton3 = (Button) findviewbyid(r.id.boton_3); boton3.setonclicklistener(this);

@Override public boolean oncreateoptionsmenu(menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getmenuinflater().inflate(r.menu.main, menu); return true; @Override public void onclick(view v) { TextView texto = (TextView) findviewbyid(r.id.texto_1); Button boton = (Button) v; texto.settext(boton.gettext()); Cada uno de los botones registra el mismo método como listener (Método onclick) ya que lo único que tiene que hacer es imprimir el texto del botón por pantalla.

Revisando nuestro código nos podemos dar cuenta que tenemos un problema. Por cada botón que tenemos debemos utilizar el método findviewbyid. <pre>@override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); Button boton1 = (Button) findviewbyid(r.id.boton_1); boton1.setonclicklistener(this); Button boton2 = (Button) findviewbyid(r.id.boton_2); boton2.setonclicklistener(this);

Button boton3 = (Button) findviewbyid(r.id.boton_3); boton3.setonclicklistener(this); </pre> Es evidente que cuantos mas botones tengamos mas estaremos repitiendo código ya que todos los eventos hacen lo mismo. Como podemos solventar este problema?. Android TAG En este caso podemos usar una de las características básicas de los controles y menos conocidas los Android TAG que nos permiten marcar varios controles con la misma Etiqueta en nuestro caso la denominaremos grupobotones. Veamos como queda modificado el Layout. <LinearLayout android:id="@+id/zona" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/texto_1" /> android:id="@+id/boton_1"

android:tag="grupobotones" android:text="@string/boton_1" /> android:id="@+id/boton_2" android:tag="grupobotones" android:text="@string/boton_2" /> android:id="@+id/boton_3" android:tag="grupobotones" android:text="@string/boton_3" /> </LinearLayout> Realizada esta operación podemos modificar el método oncreate de nuestra actividad para que genere los listener para todos aquellos controles que compartan el mismo TAG. @Override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); LinearLayout grupo = (LinearLayout) findviewbyid(r.id.zona); Log.v("mensaje", grupo.getchildcount() + "");

Button boton = null; for (int i = 0; i < grupo.getchildcount(); i++) { View vista = grupo.getchildat(i); if (vista.gettag()!= null && vista.gettag().tostring().equals("grupobotones")) { boton = (Button) vista; boton.setonclicklistener(this); De esta forma habremos cumplido con el principio DRY utilizando Android TAG ya que podremos añadir los botones que queramos sin repetir código.