Cómo manejar arrays en un XML de Android - CableNaranja

Cómo manejar arrays en un XML de Android

¡Comparte nuestro contenido!

¡Haz clic para puntuar esta entrada!
(Votos: 1 Promedio: 5)

Un array o arreglo, es un conjunto limitado de elementos, los arrays clásicos suelen ser todos del mismo tipo. En Android, es posible manejarlos en un archivo XML especial llamado strings.xml, pero también se pueden trabajar por separado ¿Quieres saber cómo hacerlo? ¡Manos a la obra!

Arrays en el archivo strings.xml

El primer lugar donde podemos colocar arrays en un proyecto de Android, se encuentra en la carpeta res, dentro de la subcarpeta values. Ahí encontraremos el archivo strings.xml.

Cómo manejar arrays en un XML de Android - CableNaranja

Al abrir dicho archivo, podemos encontrar su estructura básica.

Cómo manejar arrays en un XML de Android - CableNaranja

Para crear un array, utilizaremos el par <string-array></string-array> al cual le asignaremos un nombre a través de su propiedad name. Dentro de ese elemento, utilizaremos el par <item></item> para definir cada elemento del array. Por ejemplo:

<string-array name="lista">
   <item>Hipocampo</item>
   <item>Pez Luna</item>
   <item>Pez Vela</item>
   <item>Tiburón</item>
   <item>Delfín</item>
</string-array>

El cual se verá así.

Cómo manejar arrays en un XML de Android - CableNaranja

Crear un archivo propio para los arrays

Dado que el archivo strings.xml comúnmente se utiliza para todos las cadenas de texto del proyecto, es posible que el usar arrays, necesitemos que estén en un archivo separado. Para lograr esto, presionamos el botón derecho del ratón sobre la subcarpeta values, luego elegimos la opción New y por último seleccionamos Values Resource File.

Cómo manejar arrays en un XML de Android - CableNaranja

Dentro de la ventana de diálogo, escribimos el File name y presionamos el botón OK.

Cómo manejar arrays en un XML de Android - CableNaranja

Una vez creado el archivo, inicialmente luce así:

Cómo manejar arrays en un XML de Android - CableNaranja

Entre los elementos <resources></resources>, creamos el array que necesitamos, por ejemplo:

<string-array name="colores">
   <item>Azul</item>
   <item>Verde</item>
   <item>Rojo</item>
   <item>Amarillo</item>
   <item>Naranja</item>
</string-array>

El cual, nos debe de quedar como sigue:

Cómo manejar arrays en un XML de Android - CableNaranja

Asignar un array a un objeto

El objeto más básico y típico para esto, es un Spinner, el cual encontraremos dentro del Palette, en la categoría Containers.

Cómo manejar arrays en un XML de Android - CableNaranja

Colocamos un Spinner dentro de nuestro activity y jugamos un poco con sus atributos, por ejemplo:

Cómo manejar arrays en un XML de Android - CableNaranja

El cual, debe lucir más o menos así:

Cómo manejar arrays en un XML de Android - CableNaranja

Para asignar uno de nuestros array, localizamos el atributo entries del Spinner y lo asignamos por ejemplo al primer array que hicimos colocando el valor @array/lista

Cómo manejar arrays en un XML de Android - CableNaranja

Probemos el resultado.

Cómo utilizar el array-string en Java

Antes de programar, preparemos el escenario para nuestra aplicación. Lo primero, será añadir al archivo strings.xml, dos cadenas de texto.

<string name="boton1">Ver Colores</string>
<string name="boton2">Cambiar Lista</string>

Las cuales, deben de quedar así:

Cómo manejar arrays en un XML de Android - CableNaranja

Dentro de nuestro activity, colocamos dos objetos Button, cada uno de ellos utilizará en su atributo text una de esas cadenas de texto. Adicionalmente, llevaran en su atributo id los nombres de btnColor1 y btnColor2 respectivamente.

Cómo manejar arrays en un XML de Android - CableNaranja

¡Es hora de programar! en el archivo Java de nuestro activity, lo primero que necesitamos es agregar las variables que vamos a usar. Colocaremos una por cada objeto, un Toast para enviar mensajes, un arreglo de tipo String y una variable de tipo Resources.

private String[] colores;
private Resources recurso;
private Spinner cmbLista;
private Button btnColor1, btnColor2;
private Toast mensaje;

Estas variables serán atributos de nuestra clase.

Cómo manejar arrays en un XML de Android - CableNaranja

Dentro del método onCreate, hacemos las instancias de cada objeto.

cmbLista = (Spinner) findViewById(R.id.cmbLista);
btnColor1 = (Button) findViewById(R.id.btnColor1);
btnColor2 = (Button) findViewById(R.id.btnColor2);

Con el método getResources, cargamos nuestra variable de tipo Resources. Este objeto, nos permite acceder a los elementos de la carpeta res de nuestro proyecto.

recurso = getResources();

Ahora que tenemos acceso a la carpeta res, cargamos el array que declaramos con el método getStringArray, que nos permite por medio de su id, tener acceso a cada string-array, en este caso usaremos el que tenemos en nuestro archivo milista.xml

colores = recurso.getStringArray(R.array.colores);

Así vamos al momento.

Cómo manejar arrays en un XML de Android - CableNaranja

Creamos el listener del primero botón.

btnColor1.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View view) {

   }             
});

Para mostrar el contenido del array, hacemos lo clásico, es decir, con un ciclo for y la propiedad length revisamos cada elemento. También creamos el mensaje con el texto de cada elemento del arreglo.

for(int c=0;c< colores.length;c++){
   mensaje = Toast.makeText(getApplicationContext(), colores[c],Toast.LENGTH_SHORT);
   mensaje.show();
}

Así debe quedar el primer botón.

Cómo manejar arrays en un XML de Android - CableNaranja

Creamos el listener del segundo botón.

btnColor2.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View view) {

   }             
});

Para cambiar la lista del Spinner, utilizaremos el método setAdapter con un ArrayAdapter que lleva 3 parámetros:

  • El contexto de la aplicación: Aquí usamos getApplicationContext.
  • Un layout para el array: el valor más típico es android.R.layout.simple_spinner_item
  • Un array de tipo String: Aquí colocamos nuestra variable colores que es de ese tipo
cmbLista.setAdapter(new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_spinner_item,colores));

Lo que debería quedar así:

Cómo manejar arrays en un XML de Android - CableNaranja

Con eso terminado, es momento de hacer una última prueba.

Y eso es todo por ahora ¿Te ha resultado? Déjanos saber en los comentarios aquí abajo, en nuestra cuenta de twitter @cablenaranja7 o en nuestra página de facebook.

¡Comparte nuestro contenido!

Entradas relacionadas

4 comentarios en "Cómo manejar arrays en un XML de Android"

  1. hola, una pregunta, necesito limitar el contenido del array colores
    imagina que “hipocampo” tiene todos los colores, pero
    “pez luna” solo tiene naranja y amarillo.

    como puedo limitar el array según la primer selección??

    en el proyecto que estoy modificando tengo un array general para los capítulos de un libro, pero todos los libros No tienen los mismos capítulos. y la lista siempre muestra el numero total.

    espero tu respuesta. excelente contenido y calidad, muy detallado, agradezco el video.

    1. Saludos Julio, gracias por tus comentarios. Respecto a tu problema:

      Puedes crear una clase que utilice un ArrayList y luego crear un array de esa clase, por ejemplo:


      public class Lista{
      private ArrayList colores;
      public Lista(){
      colores = new ArrayList
      ();
      }
      public void addColor(String c){
      colores.add(c);
      }
      public String getColor(int posicion){
      return colores.get(posicion);
      }
      }

      Y ya dentro de tu aplicación puedes darle un uso como este:


      Lista[] lst = new Lista[2];

      lst[0].addColor("rojo");
      lst[0].addColor("verde");
      lst[0].addColor("azul");
      lst[0].addColor("rosa");

      lst[1].addColor("naranja");
      lst[0].addColor("amarillo");

      Por supuesto también puedes crear un archivo JSON y usar JSONObject y JSONArray para cargarlo… Espero te sirva de algo

      1. Hola gracias por la respuesta, si podes te hago una consulta mas, pude crear el ejercicio de la página, funciona bien la app, en cuanto a tu respuesta creé el archivo class (Lista) pero no me doy cuenta en donde cargar esto =

        Lista[] lst = new Lista[2];

        lst[0].addColor(“rojo”);
        lst[0].addColor(“verde”);
        lst[0].addColor(“azul”);
        lst[0].addColor(“rosa”);

        lst[1].addColor(“naranja”);
        lst[0].addColor(“amarillo”);

        gracias por la ayuda!

        1. En el cargador de la clase principal o de aquella otra clase donde necesites llamar al objeto lista. Algo como:


          public class ventana extends JFrame{

          private lista[]lst = new Lista[2];

          public ventana(){
          lst[0].addColor(“rojo”);
          lst[0].addColor(“verde”);
          lst[0].addColor(“azul”);
          lst[0].addColor(“rosa”);

          lst[1].addColor(“naranja”);
          lst[1].addColor(“amarillo”); // Aquí es 1 ya que sería la posición 2
          }
          }

          O algo similar. Espero te ayude.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *