Cómo convertir de un ArrayList de matrices a una matriz de matrices

// edit: He cambiado mi conversión de ArrayList, pero no puedo cargar la segunda ruleta

Qué estoy haciendo mal. Me gustaría llenar un segundo spinner con una matriz de w dependiendo de la fila seleccionada en el primer spinner, pero estoy recibiendo esta advertencia al intentar convertir de matriz lista.

*** Tengo esto marcado en el código Null Pointer Exception 11-06 19: 03: 34.050: WARN / System.err (5342): en RetrievingAmazonXMLDataActivity.onCreate (RetrievingAmazonXMLDataActivity.java:88)

// código editado

for (int i = 0; i < tokens.length; i++) { String a = dumpTitles("ProductName", i); element = a.split("!"); allProducts.add(element); } w = (String[][])allProducts.toArray(new String[allProducts.size()][]); Spinner spinnerProducts = (Spinner) findViewById(R.id.spinner2); spinnerProducts.setOnItemSelectedListener(this); 

// * * línea de error abajo

  ArrayAdapter<String> productsArrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, productArrayToShow); productsArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinnerProducts.setAdapter(productsArrayAdapter); public void onItemSelected(AdapterView<?> parent, View v, int position, long id) { try { selected = parent.getItemAtPosition(position).toString(); productArrayToShow = w[position]; } catch (Exception e) {} } 

// código original

 ArrayList<String[]>allProducts = new ArrayList<String[]>(); for (int i = 0; i < tokens.length; i++) { String a = dumpTitles("ProductName", i); element = a.split("!"); allProducts.add(element); } String[][] w; = new String[allProducts.size()][]; for (int a = 0; a<allProducts.size(); a++) { w[a] = (String[])allProducts.toArray(new String[allProducts.size()]); } 

¿Por qué no sólo

 String[][] w = allProducts.toArray(new String[][] {}); 

Parece que cambiaste de opinión sobre cómo ibas a hacer la conversión a mitad de camino. Su código es un poco de esto:

 String[][] w = new String[allProducts.size()][]; for (int a = 0; a<allProducts.size(); a++) { w[a] = allProducts.get(a); } 

y un poco de eso:

 String[][] w = (String[][])allProducts.toArray(new String[allProducts.size()][]); 

Cualquiera funcionará, aunque este último es más corto, y posiblemente más eficiente.

Pienso que usted puede conseguir con apenas esto:

 String[][] w = allProducts.toArray(new String[allProducts.size()]); 

Hacerlos del mismo tipo de datos un "ArrayList" y un "Array of Strings" no son del mismo tipo de datos, por lo que no serán comparables entre sí. Y por favor comente dónde está el problema.

  • El reajuste de MediaPlayer de Android congela la interfaz de usuario
  • ¿Qué es diferente de putSerializable y putParcelable en Java?
  • Compartir y almacenar RSA - clave pública en el servidor java y viceversa
  • C ++ ifstream.getline () significativamente más lento que BufferedReader.readLine () de Java?
  • Error de sistema que captura la salida de una pantalla virtual de MediaProjection a un ImageReader
  • ¿Por qué obtengo "debe reemplazar un método de superclase" con @Override?
  • ¿Mostrar caracteres unicode en android?
  • Java.exe terminó con valor de salida no nulo 2 en Android Studio
  • Android Studio - Gradle 1.5 - opción de la biblioteca
  • Cómo comprobar si la configuración de la pantalla de giro automático está activada / desactivada en Android 4.0+
  • Error al crear objeto Uri
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.