Android Resource – Array de matrices

Estoy tratando de implementar una estructura de datos de recursos que incluye una matriz de matrices, específicamente cadenas. El problema que encuentro es cómo obtener los objetos de la sub-matriz y sus valores específicos. Aquí es cómo se ve mi archivo de recursos ….

<resources> <array name="array0"> <item> <string-array name="array01"> <item name="id">1</item> <item name="title">item one</item> </string-array> </item> <item> <string-array name="array02"> <item name="id">2</item> <item name="title">item two</item> </string-array> </item> <item> <string-array name="array03"> <item name="id">3</item> <item name="title">item three</item> </string-array> </item> </array> </resources> 

Entonces, en mi código Java recuperar la matriz y tratar de acceder a los sub elementos como …

 TypedArray typedArray = getResources().obtainTypedArray(R.array.array0); TypedValue typedValue = null; typedArray.getValue(0, typedValue); 

En este punto, el objeto typedArray debería representar la matriz de cadenas "array01", sin embargo, no veo cómo recuperar los elementos de cadena "id" y "title". Cualquier ayuda sería apreciada, gracias de antemano.

Casi puedes hacer lo que quieras. Tienes que declarar cada array por separado y luego una matriz de referencias. Algo como esto:

 <string-array name="array01"> <item name="id">1</item> <item name="title">item one</item> </string-array> <!-- etc. --> <array name="array0"> <item>@array/array01</item> <!-- etc. --> </array> 

Entonces en su código usted hace algo como esto:

 Resources res = getResources(); TypedArray ta = res.obtainTypedArray(R.array.array0); int n = ta.length(); String[][] array = new String[n][]; for (int i = 0; i < n; ++i) { int id = ta.getResourceId(i, 0); if (id > 0) { array[i] = res.getStringArray(id); } else { // something wrong with the XML } } ta.recycle(); // Important! 

De acuerdo con la respuesta @Ted Hopp, forma más elegante:

 <integer-array name="id_array"> <item>1</item> <item>2</item> <item>3</item> </integer-array> <string-array name="name_array"> <item>name 1</item> <item>name 2</item> <item>name 3</item> </string-array> <array name="array0"> <item>@array/id_array</item> <item>@array/name_array</item> </array> 

Asegúrese de que el recuento de filas secundarias es idéntico.
¡Goce el código de escritura para tener acceso a las células de la matriz!
Android sigue siendo un niño mientras mantienen la fea etiqueta "item" del TypedArray "array0".
En mi opinión, el más flexible debe ser:

 <array name="array0"> <integer-array name="id_array"> <item>1</item> <item>2</item> <item>3</item> </integer-array> <string-array name="name_array"> <item>name 1</item> <item>name 2</item> <item>name 3</item> </string-array> </array> 

Pero no lo hagas porque eso no es android manera 🙂

https://developer.android.com/guide/topics/resources/more-resources.html#Color

 <?xml version="1.0" encoding="utf-8"?> <resources> <array name="icons"> <item>@drawable/home</item> <item>@drawable/settings</item> <item>@drawable/logout</item> </array> <array name="colors"> <item>#FFFF0000</item> <item>#FF00FF00</item> <item>#FF0000FF</item> </array> </resources> 

Este código de aplicación recupera cada matriz y luego obtiene la primera entrada en cada matriz:

 Resources res = getResources(); TypedArray icons = res.obtainTypedArray(R.array.icons); Drawable drawable = icons.getDrawable(0); TypedArray colors = res.obtainTypedArray(R.array.colors); int color = colors.getColor(0,0); 

Un Array no es un par nombre / valor. Sólo puede acceder a los elementos por número. La sintaxis en el xml es incorrecta. Debería ser así:

 <string-array name="string_array_name"> <item>text_string1</item> <item>text_string2</item> </string-array> 
  • Android: ¿es posible agregar un enlace que se puede hacer clic en un recurso de cadena
  • ¿Cómo puedo hacer un diamante ShapeDrawable?
  • Frontera de elementos de listview en android
  • Android: Añadir una vista de texto al diseño lineal mediante programación
  • ¿Cómo lleno un ListView (en Android) con datos XML o JSON?
  • Animación flotante suave con traducción en XML
  • Android SAX Parsing: Cómo conservar Newlines desde dentro de una etiqueta CDATA
  • ¿Tenemos alguna herramienta para convertir el diseño xml de Android a archivos .java?
  • No se puede acceder a android / drawable Icon-Resource
  • Eclipse Android Editor de XML común no puede cambiar entre modos
  • Android 9 patch xml dibujable
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.