Arraylist del arraylist en el método
tener un problema tratando de obtener un arraylist conteniendo arraylists para trabajar en mi programa, estoy recibiendo una extraña advertencia diciendo: add @SuppressWarnings "null" a processArray (), independientemente de si agrego esto o no mi programa se bloquea, ¿hay algo obvio que estoy haciendo mal aquí? cualquier ayuda sería un gran camino gracias.
private ArrayList<ArrayList<String>> processArray(ResponseList<Status> responses){ ArrayList<ArrayList<String>> mainArray = null; ArrayList<String> innerArrays = null; for (Status response: responses ){ String name, status, imgUrl, time; name = response.getUser().getName(); status = response.getText(); imgUrl = response.getUser().getProfileImageURL().toString(); time = response.getCreatedAt().toString(); ArrayList<String> rtLinks = checkLinks(response.getText()); if(rtLinks != null){ for (String tLink: rtLinks){ innerArrays.add(name); innerArrays.add(status); innerArrays.add(imgUrl); innerArrays.add(time); innerArrays.add(tLink); mainArray.add(innerArrays); } } } return mainArray;
- Efectos de transición con Android ImageView
- PreferenciaActividad con varios archivos de preferencias
- Lectura de archivos desde almacenamiento externo de Android SDK Emulator
- Construir .APK después de editar con dex2jar y jd-gui?
- Cómo jugar ringtone selected from RingtonePreference
- Obteniendo el "puntero" a NavigationBarView.java por reflexión
- ¿Cómo ejecutar el método principal de una clase de actividad de Android?
- Android TabView error?
- Biblioteca de AndroidFillableLoaders de JorgeCastilloPrz - Problema de SVGPath
- Esta clase Handler debe ser estática o pueden producirse fugas: handler final
- ¿Por qué String.format () no funciona en Android TextView?
- ¿Cómo configurar un emulador que ejecuta API 25 usando una matriz de compilación en Travis CI?
- Cómo obtener el tamaño de una imagen que se mantiene en una matriz de bytes en KB
En realidad nunca se inicializa ninguno de esos arraylists.
Usted quiere
ArrayList<ArrayList<String>> mainArray = new ArrayList<ArrayList<String>>(); // or new ArrayList<>() in java 7
y dentro del bucle interno :
ArrayList<String> innerArrays = new ArrayList<String>(); // or new ArrayList<>() in java 7
Además, no suprima nunca las advertencias "sólo para que el código funcione". Sólo suprimirlos cuando se sabe exactamente por qué aparecen y exactamente por qué usted está eligiendo a ignorarlos.
Su programa probablemente se está estrellando debido a una NullPointerException
. Esto ocurre cuando intenta tener acceso a una variable cuyo valor es null
(conocido como dereferencing un puntero nulo ). Antes de acceder a cualquiera de las dos ArrayList
s, tendrá que inicializarlo. Intente cambiar las dos líneas a esto:
ArrayList<ArrayList<String>> mainArray = new ArrayList<ArrayList<String>>(); ArrayList<String> innerArrays = new ArrayList<String>();
Esto debería resolver su problema inmediato.
Sin embargo, no estoy seguro de por qué está utilizando una lista innerArrays
en absoluto. Yo refactorizaría el último bit a esto:
for (String tLink: rtLinks){ ArrayList<String> tempList = new ArrayList<String>(); tempList.add(name); tempList.add(status); tempList.add(imgUrl); tempList.add(time); tempList.add(tLink); mainArray.add(tempList); }
y quite la variable innerArrays
. De esta manera, el alcance es más limitado, y el código funciona más lógicamente.
Está intentando agregar la variable innerArrays a su ArrayList principal, pero ha declarado su ArrayList principal null en el principio del método. Inicialice la ArrayList principal como una nueva ArrayList de ArrayLists de cadenas, y su código debería funcionar.