2017-11-03 1 views
0

Ich bekomme nicht das Ergebnis wahr, auch wenn das erste Element von beiden Arraylistes sind gleich.ich möchte meine Checkbox, wenn das Ergebnis übereinstimmt.Ich habe es in meinem Recyclerview implementiert Ich möchte die Elemente der Arraylisten vergleichen, aber beide sind unterschiedlich groß. Ich fand eine Lösung online und implementierte sie wie folgt:Vergleichen Sie Elemente von zwei Arraylist verschiedener Größen und Reihenfolge in Android

List<String> list1 = new ArrayList<>(); 
        for (int i = 0; i < data.size(); i++) { 
         list1.add(data.get(i).getChannel_names()); 
        } 
        List<String> list2 = new ArrayList<>(); 
        for (int i = 0; i < listNewsChannelsSelected.size(); i++) { 
         list2.add(listNewsChannelsSelected.get(i).getSelectedChannelsFromApi()); 
        } 

     private boolean equalLists(List<String> one, List<String> two) { 
       if (one == null && two == null) { 
        return false; 
       } 

       if (one != null && two == null) { 
        return false; 
       } 


       one = new ArrayList<>(one); 
       two = new ArrayList<>(two); 

       Collections.sort(one); 
       Collections.sort(two); 
       return one.equals(two); 
      } 
    if (equalLists(list1,list2)) { 
       holder.mCheckBox.setChecked(true); 
      } else { 
       holder.mCheckBox.setChecked(false); 
      } 
+0

haben Sie sowohl Comparer als auch Comparator implementiert, Wenn ja, senden Sie die Details bitte. Wenn nicht müssen Sie sie implementieren –

+0

Ich habe nicht @ NirajSanghani. aber warum Komparator wenn EqulaLists-Methode bereits vergleicht. –

+0

I thingk dann Ihre Frage ist nicht klar in Bezug auf den Vergleich –

Antwort

0

Ich habe es gerade getestet und festgestellt, dass im Code nichts falsch ist. (Bit modifiziert, um in Java zu testen). Ich bekomme das Ergebnis als TRUE, so dass der Code korrekt ist.

Versuchen Sie, Ihre API-Daten zu überprüfen. Es scheint inkorrekt zu sein (nicht das, was Sie erwarten). Versuchen Sie, Protokolle zu erzeugen (drucken Sie API-Daten in einer Schleife).

public class Main { 

public static void main(String args[]){ 

    List<String> list1 = new ArrayList<>(); 
    for (int i = 0; i < 5; i++) { 
     list1.add(""+i); 
    } 
    List<String> list2 = new ArrayList<>(); 
    for (int i = 0; i < 5; i++) { 
     list2.add(""+i); 
    } 

    if (equalLists(list1,list2)) { 
     System.out.println("TRUE"); 
    } else { 
     System.out.println("FALSE"); 
    } 

} 



private static boolean equalLists(List<String> one, List<String> two) { 
    if (one == null && two == null) { 
     return false; 
    } 

    if (one != null && two == null) { 
     return false; 
    } 


    one = new ArrayList<>(one); 
    two = new ArrayList<>(two); 

    Collections.sort(one); 
    Collections.sort(two); 
    return one.equals(two); 
} 
Verwandte Themen