1. Code
  2. Mobile Development
  3. Android Development

Android Fundamentos: Trabajando con String y Arreglos String

Scroll to top
This post is part of a series called Android Essentials.
Android Tools: Leveraging the Hierarchy Viewer for UI Profiling
Android Essentials: Making Sense of Android Versioning

Spanish (Español) translation by Rodney Martinez (you can also view the original English article)

Una práctica pobre de código que en realidad hacer que nuestra sangre arda es cuando los desarrolles incluyen inexpertos string de contenidos en una línea en el código. Por supuesto, en ocasiones hay buenas razones para hacer esto, especialmente cuando depura código, pero generalmente hablando, si aplicación Android depende de las cadenas de contenidos que es mostrado en la pantalla, entonces éstos datos pertenecen a los recursos de Android, no en el mismo código.

Hay una cantidad de beneficios para incluir cadenas de contenidos como un recurso, tales como:

  • Este centraliza la cadena utilizada por la aplicación en una sola ubicación que es fácil de conseguir (ya sea por el desarrollador o alguien más).
  • Los Strings pueden ser definidos como un recurso una vez y usarlos a través del código. Por lo tanto, éste tendrá escritura consistente, casos y puntuaciones.
  • Los Strings pueden ser internacionalizados con facilidad, permitiendo a su aplicación tener soporte en múltiples idiomas con un solo archivo de paquete de aplicación (APK).
  • Los Strings no desorganizan el código de su aplicación, más bien lo dejan claro y fácil de mantener.

Así que vamos a hablar acerca de cómo añadir strings y, más importante, recursos de arreglos strings a su aplicación de forma eficaz.

Paso 1: Definir los Recursos Strings para Strings Individuales

Los recursos strings pertenecen a los archivos /res/values/strings.xml. Definir una entrada para un recurso string usado por su aplicación. Nombre los recursos de su string apropiadamente. Por ejemplo, el siguiente fragmento XML define un número de juegos de carreras de tipos de caracteres como strings individuales:

1
 
2
<?xml version="1.0" encoding="utf-8"?>
3
<resources>
4
    <string
5
        name="app_name">Choose Your Own</string>
6
    <string
7
        name="race_orc">Orc</string>
8
    <string
9
        name="race_elf">Elf</string>
10
    <string
11
        name="race_troll">Troll</string>
12
    <string
13
        name="race_human">Human</string>
14
    <string
15
        name="race_halfling">Halfling</string>
16
    <string
17
        name="race_goblin">Goblin</string>
18
</resources>

Observe el prefijo "race_" de cada recurso string. Esto ayuda a recordar a los miembros del equipo que estos strings pueden estar relacionados de alguna manera. Por ejemplo, podrían ser utilizados juntos en un arreglo o mostrarse como opciones en un control Spinner.

Paso 2: Cargue su recurso String mediante la programación

Usted puede cargar un string para usar en su código usando el método getString() de la clase Resources. El siguiente código puede ser colocado en su clase Activity para cargar un recurso String definido en su aplicación:

1
2
String sOrc = getResources().getString(R.string.race_orc);

Una cosa práctica acerca de cargar recursos de esta forma es que si usted ha proporcionado recursos alternativos en diferentes lenguajes, entonces la versión apropiada del lenguaje del string será cargada basado en la configuración de servicio en tiempo de ejecución. Ningún código especial se necesita para realizar éste trabajo.

Paso 3: Definir el arreglo de recurso String usando las referencias de recursos String

Ahora digamos que quiso crear un arreglo para estos strings de carrera de caracteres. Por supuesto, usted podría cargarlos todos individualmente en el código de Java y hacer un arreglo String en la memoria, sin embargo, necesitaría conocer cada uno de los recursos completos de los nombres de los id y referenciarlo en el código.  En vez de eso, su mejor opción es crear un arreglo de recurso String que haga referencia a los recursos string individuales que ya ha creado, y únalos.

Los recursos de los arreglos String están mejor almacenados en el archivo /res/values/arrays.xml. Defina un arreglo string con un ítem para cada string utilizado por su aplicación. Nombre sus arreglos strings de forma apropiada. Por ejemplo, el siguiente fragmento XML define un arreglo que contiene cada uno de los tipos de caracteres del juego de carrera definidos en el archivo de recurso strings.xml que vimos en el Paso 1:

1
2
<?xml version="1.0" encoding="utf-8"?>
3
<resources>
4
    <string-array
5
        name="races_array">
6
        <item>@string/race_goblin</item>
7
        <item>@string/race_orc</item>
8
        <item>@string/race_elf</item>
9
        <item>@string/race_human</item>
10
        <item>@string/race_troll</item>
11
        <item>@string/race_halfling</item>
12
    </string-array>
13
</resources>

Paso 4: Cargue su Arreglo String por medio de programación

Usted puede cargar con mucha facilidad un arreglo string para usarlo en su código usando el método getStringArray() de la clase Resources. El siguiente código puede ser colocado en su clase Activity para cargar un recurso de arreglo definido en su aplicación:

1
2
String[] cRaces = getResources().getStringArray(R.array.races_array);

Paso 5: Referenciando a los Recursos de Arreglos en Simples Controles Spinner

Una razón útil para ir a través de todo éste trabajo es llenar un control que requiere un adaptador de datos, la forma más sencilla de hacer esto es a través de un arreglo. Si no está familiarizado con el uso de los adaptadores de datos para llenar controles Spinne, entonces revise el siguiente tutorial; Hola Spinners, Sitio web de desarrollo de Android. Sin embargo, el método descrito en el tutorial enlazado no es internacionalizado tan fácil como lo describimos en éste tutorial, ya que éste define los strings de contenidos en un arreglo de recurso string, en vez de una referencia string.

Usando un arreglo de recurso string, le permite saltar los pasos conectar su adaptador de datos a su control. Por ejemplo, un simple control Spinner, o uno desplegable, puede ser rellenado con un arreglo de recurso string sin molestarse con esos adaptadores fastidiosos. Simplemente añade un control Spinner al archivo de su composición y ajusta su android: entradas de atributos para el arreglo de recurso string que usted creo y que está listo. Por ejemplo:

1
2
 <Spinner
3
     android:layout_height="wrap_content"
4
     android:layout_width="match_parent"
5
     android:id="@+id/spinnerOfCharacterRaces"
6
     android:entries="@array/races_array">
7
</Spinner>

Esto define un control Spinner que mostrará cada uno de los caracteres de strings como opciones, como muestra la Figura 1.

Screenshot of spinner using an resource string array to populate itScreenshot of spinner using an resource string array to populate itScreenshot of spinner using an resource string array to populate it

En su clase Activity, ahora puede implementar un evento OnItemSelectedListener para capturar cuando el usuario seleccione un carácter específico, como éste:

1
2
Spinner cRaceSpinner = (Spinner) findViewById(R.id.spinnerOfCharacterRaces);
3
cRaceSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
4
   public void onItemSelected(AdapterView<?> arg0, View arg1,arg2, long arg3) {
5
      String strChosenRace = (String) arg0.getItemAtPosition(arg2);
6
   }
7
   public void onNothingSelected(AdapterView<?> arg0) {}
8
});

Aquí simplemente reaccionamos cuando un ítem en el Spinner es seleccionado. Miramos los datos seleccionados usando el método getItemAtPosition(), el cual, en el caso del arreglo del recurso string, es el mismo dato string.

En conclusión

No hay un razón absoluta para definir strings y arreglos de strings en línea de código. Los Strings y los arreglos strings pertenecen a los recursos de su aplicación Android, sin desordenar su elegante código de Java. Hay un buen número de beneficios para almacenar datos string en archivos de recursos, incluyendo mejor organización y internacionalización más fácil. Los arreglos String son, incluso, más poderosos cuando están conformados de referencias de recursos string en vez de los datos string sin procesar. Los recursos de arreglos strings pueden ser pegados a muchos controles UI que generalmente dependen de adaptadores de datos sin mucho alboroto, haciendo su código, incluso, mucho más legible y sostenible.

Como siempre, esperaremos por sus comentarios.

Sobre los Autores

Desarrolladores de Celulares; Lauren Darcey y Shane Conder son coautores de varios libros sobre el desarrollo en Android: un libro de programación a fondo titulado: Desarrollo de Aplicaciones Inalámbricas de Android y Sams Aprenda usted mismo a Desarrollar Aplicaciones para Android en 24 horas. Cuando no escriben, ellos pasan su tiempo desarrollando programas para celulares en sus empresas y proporcionando servicios de consultoría. Ellos pueden ser localizado a través de correo electrónico: androidwirelessdev+mt@gmail.com o por medio de su blog en androidbook.blogspot.com y en Twitter @androidwireless.

¿Necesita más ayuda escribiendo aplicaciones de Android? ¡Revise nuestros últimos libros y recursos!

Buy Android Wireless Application Development, 2nd Edition Buy Sam's Teach Yourself Android Application Development in 24 Hours, Second Edition Mamlambo code at Code Canyon