ArrayList compruebe si los datos ya existen

Sólo quiero comprobar si los datos ya existen o no en ArrayList, pero cada vez obtener: No existe (s) mientras que los datos existen en ArrayList, y como resultado estoy recibiendo registros duplicados en una lista.

DataArrayList.secondArraylist.add(new Second(actorList.get(position).getName(), actorList.get(position).getImage())); System.out.println(DataArrayList.secondArraylist.size()); String strName = actorList.get(position).getName().toString(); Log.d("name:", strName); for(int i=0; i<DataArrayList.secondArraylist.size(); i++) { if(DataArrayList.secondArraylist.get(i).getName().equals(strName)) { System.out.println(DataArrayList.secondArraylist.get(i).getName()); Toast.makeText(context, "Exist(s)", Toast.LENGTH_SHORT); } else { Toast.makeText(context, "Not Exist(s)", Toast.LENGTH_SHORT); } } 

Problema:

No obtengo ningún mensaje Toast, que estoy usando para indicar que "Data Exists" o "Not"

Finalmente:

Quisiera agregar el artículo al arraylist si ya no existe (s), sino quiero demostrar Toast que el artículo ya existe (s)

Está comparando el objeto de lista DataArrayList.secondArraylist con un String

 if (DataArrayList.secondArraylist.equals(strName)) { 

Eso siempre devolverá false . En su lugar, cree un método que pase por la lista y compruebe el strName contra el nombre de los Second objetos que se almacenan en la lista.

 boolean contains(ArrayList<Second> list, String name) { for (Second item : list) { if (item.getName().equals(name)) { return true; } } return false; } 

Luego úsalo

 if (contains(DataArrayList.secondArraylist, strName)) { System.out.println("Data Exist(s)"); } else { System.out.println("Not Exist(s)"); } 

El método contains llama al método igual con la firma igual a (Object), por lo que se requiere para anular este método en su clase POJO.

Si anula los iguales (objeto), también debe anular el hashcode ()

Fragmento de código :

 @Override public String toString() { return getName(); } @Override public boolean equals(Object obj) { return !super.equals(obj); } @Override public int hashCode() { return getName().hashCode(); } 

Editar:

Además, el método contains se utiliza para Object. Por lo tanto, su condición debe verse así:

  (DataArrayList.secondArraylist.contains(actorList.get(position))) 

Código final:

 if (DataArrayList.secondArraylist.contains(actorList.get(position))) { System.out.println("Data Exist(s)"); } else { System.out.println("Not Exist(s)"); } 

Necesita utilizar indexOf() mientras comprueba un valor en ArrayList

 if (DataArrayList.secondArraylist.indexOf(strName)!=-1) { System.out.println("Data Exist(s)"); } else { System.out.println("Not Exist(s)"); } 

Como el strName que está comprobando es una propiedad de su Second objeto, no puede comprobarlo directamente utilizando el método de ArrayList . La forma más fácil sería realizar un bucle a través de ArrayList DataArrayList.secondArraylist , obtener cada Second objeto contenido en la lista y, a continuación, comprobar si strName es igual a esa propiedad de su Second objeto.

No está seguro de cómo implementar el Second objeto, pero debe obtener la cadena correspondiente de cada Second objeto y compararlo con strName .

  • Acceda a la impresora a través de Wifi desde el dispositivo Android
  • ¿Cómo reconstruir o restablecer caché Observable, utilizado con Retrofit para obtener nuevos datos?
  • Mostrar el teclado mediante programación en Android con un botón OK / DONE
  • Teclado con scrollView
  • Pestañas de Viewpager Fragmento y Fragmentos normales
  • NotificationListenerService: NullPointerException en getActiveNotifications
  • Cómo ajustar la sensibilidad del micrófono mientras graba audio en android
  • ¿Cuál es la diferencia entre Handler, Runnable y Threads?
  • Medición del rendimiento en Android
  • Doble control deslizante android
  • Nuevo PhoneGap 3.0 No se puede resolver la importación org.apache.cordova
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.