Problema con ArrayList en Android

Iniciado por darkkk, Noviembre 01, 2019, 07:21:37 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Noviembre 01, 2019, 07:21:37 AM Ultima modificación: Noviembre 01, 2019, 12:24:24 PM por Gabriela
Tengo el siguiente còdigo:

Código: text
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:

Código: text
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):

Código: text
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?

Hola @No tienes permitido ver enlaces. Registrate o Entra a tu cuenta,

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...

No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

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

@No tienes permitido ver enlaces. Registrate o Entra a tu cuenta Porque no puedes utilizar un ciclo de estas caracteristicas ?




Con la fuerza del mar, con la paz del rio