Je veux juste vérifier si des données existent déjà ou non dans ArrayList, mais à chaque fois que:
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);
}
}
Problème:
Ne pas recevoir de message Toast, que j'utilise pour indiquer que "Data Exists" ou "Not"
Finalement:
Je voudrais ajouter un article à une liste s'il n'existe pas déjà, sinon montrer à Toast que cet article existe déjà
Vous comparez votre objet liste DataArrayList.secondArraylist
avec un String
if (DataArrayList.secondArraylist.equals(strName)) {
Cela retournera toujours false
. À la place, créez une méthode qui parcourt la liste et compare la variable strName
au nom des objets Second
stockés dans la liste.
boolean contains(ArrayList<Second> list, String name) {
for (Second item : list) {
if (item.getName().equals(name)) {
return true;
}
}
return false;
}
Alors utilise-le
if (contains(DataArrayList.secondArraylist, strName)) {
System.out.println("Data Exist(s)");
} else {
System.out.println("Not Exist(s)");
}
La méthode contains appelle la méthode equals avec signature equals (Object). Vous devez donc remplacer cette méthode dans votre classe POJO.
Si vous remplacez égal à (Object), vous devez également remplacer hashcode ()
Extrait de code :
@Override
public String toString() {
return getName();
}
@Override
public boolean equals(Object obj) {
return !super.equals(obj);
}
@Override
public int hashCode() {
return getName().hashCode();
}
De plus, la méthode includes est utilisée pour Object. Votre condition devrait donc ressembler à ceci:
(DataArrayList.secondArraylist.contains(actorList.get(position)))
Code final:
if (DataArrayList.secondArraylist.contains(actorList.get(position))) {
System.out.println("Data Exist(s)");
} else {
System.out.println("Not Exist(s)");
}
Vous devez utiliser indexOf()
lors de la vérification d'une valeur dans ArrayList
if (DataArrayList.secondArraylist.indexOf(strName)!=-1) {
System.out.println("Data Exist(s)");
} else {
System.out.println("Not Exist(s)");
}
Comme la variable strName
que vous vérifiez est une propriété de votre objet Second
, vous ne pouvez pas la vérifier directement à l'aide de la méthode de la variable ArrayList
. Le moyen le plus simple serait de parcourir ArrayList DataArrayList.secondArraylist
, obtenez chaque objet Second
contenu dans la liste, puis vérifiez si strName
est égal à cette propriété de votre objet Second
.
Vous ne savez pas comment vous implémentez l'objet Second
, mais vous devez obtenir la chaîne correspondante de chaque objet Second
, puis la comparer à strName
.