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:
- ¿Por qué run () es llamado una sola vez?
- ¿Cómo puedo comprobar si ya existe un valor en una clase de datos Parse Android
- Tcp conexión otro dispositivo android, basado en # teléfono en lugar de IP?
- MediaPlayer se detiene y se reinicia
- Acceso puntero nulo: los datos variables sólo pueden ser nulos en este lugar
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)
- Cambiar el ancho y la altura de la vista personalizada en Android
- ¿Las bibliotecas externas hacen las aplicaciones más lentas?
- Dibujo de nueve parche sobre lienzo (Android)
- Mostrar certificado de Android
- KSoap2 y KvmSerializable-Envía el objeto de clase con un campo de lista a webservice en java android
- Falso error positivo de permiso de pelusa incluso después de pedir permiso en tiempo de ejecución
- HttpClientBuilder falta en Android?
- ViewPager.setOffscreenPageLimit (0) no tiene ningún efecto en absoluto. ¿Cómo puedo cargar una página a la vez en un ViewPager?
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
.