Underc0de

Foros Generales => Dudas y pedidos generales => Mensaje iniciado por: darkkk en Noviembre 01, 2019, 07:21:37 AM

Título: Problema con ArrayList en Android
Publicado por: darkkk en Noviembre 01, 2019, 07:21:37 AM
Tengo el siguiente còdigo:

if (objetologin != null) {
                    try {
                        JSONArray jsonArray = new JSONArray();
                        jsonArray.put(objetologin);
                        JSONArray lal3 = objetologin.getJSONArray("IDM");
                        JSONArray lal1 = objetologin.getJSONArray("ESTADO");
                        JSONArray lal2 = objetologin.getJSONArray("ARCHIVO");

                            for(int i = 0; i <= lal3.length(); i++) {
                                   for(int b=0;b<=mensajes.size();b++) {
                                if(mensajes.get(b).getidm() != lal3.getString(i)) {
                                    lista.setestadom(lal1.getString(i));
                                    lista.setarchivo(lal2.getString(i));
                                    lista.setidm(lal3.getString(i));
                                    mensajes.add(lista);
                              }
                            }

                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                    }


Explicacion: este codigo se ejecuta cada x segundos lo que hace es comparar un elemento nuevo atravez de un objeto JSON con una lista, si el elemento ya existe entonces no lo agrega.

Pero descubri algo:

si la lista mensajes por ejemplo tiene 0 elementos, entonces nunca se ejecuta el for, por lo que no agregaria nada al final .. para solucionar esto pense en lo siguiente:

if (objetologin != null) {
                    try {
                        JSONArray jsonArray = new JSONArray();
                        jsonArray.put(objetologin);
                        JSONArray lal3 = objetologin.getJSONArray("IDM");
                        JSONArray lal1 = objetologin.getJSONArray("ESTADO");
                        JSONArray lal2 = objetologin.getJSONArray("ARCHIVO");

                            for(int i = 0; i <= lal3.length(); i++) {
                             
                                if(!mensajes.contains(lal3.getString(i))) {
                                    lista.setestadom(lal1.getString(i));
                                    lista.setarchivo(lal2.getString(i));
                                    lista.setidm(lal3.getString(i));
                                    mensajes.add(lista);
                              }
                            }

                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                    }


Pero tengo un problema:

Mi arraylist contiene varias listas por lo que el metodo: f(!mensajes.contains(lal3.getString(i)))

no funcionaria por que buscaria en toda la lista y esta lista contiene como 16 elementos.

entonces la pregunta es:

como puedo buscar una cadena de una lista especifica y compararla con una cadena?

en cuestion tendrìa que parcerse a esto (metodo hipotetico):

f(!mensajes.getidm().contains(lal3.getString(i)))

?

Como puedo buscar especificamente dentro de mensajes.getidm()?

resulta que los arraylist parece que necesitan un valor de index por ejemplo: mensajes.get(0).getidm()

que se referiria al elemento 0 de dicha lista, pero no puedo utilizar ni for ni contains sin especificar un valor de index.

Alguna soluciòn?
Título: Re:Problema con ArrayList en Android
Publicado por: tr0n en Noviembre 01, 2019, 10:44:01 AM
Hola @darkkk (https://underc0de.org/foro/index.php?action=profile;u=96927),

No se mucho de desarrollo en android, pero si quieres agregar algún elemento que no existe, el cual es único, ¿no es mejor usar un Set en vez de un List?

Saludos...
Título: Re:Problema con ArrayList en Android
Publicado por: Bartz en Noviembre 01, 2019, 06:17:05 PM
No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

no puedo utilizar ni for ni contains sin especificar un valor de index.

@darkkk (https://underc0de.org/foro/index.php?action=profile;u=96927) Porque no puedes utilizar un ciclo de estas caracteristicas ?