Ich habe einige Probleme zu verstehen RecyclerView
s SortedList
.Android: SortedList mit Duplikaten
Lets sagen, ich habe eine sehr einfache Klasse nur ein sehr einfaches Klasse Haltedaten:
public class Pojo {
public final int id;
public final char aChar;
public Pojo(int id, char aChar) {
this.id = id;
this.aChar = aChar;
}
@Override
public String toString() {
return "Pojo[" + "id=" + id
+ ",aChar=" + aChar
+ "]";
}
}
Mein Verständnis ist, dass die sortierte Liste wird keine Duplikate enthält.
Aber wenn ich eine SortedList mit Rückrufe wie folgt aus:
....
@Override
public boolean areContentsTheSame(Pojo oldItem, Pojo newItem) {
return oldItem.aChar == newItem.aChar;
}
@Override
public int compare(Pojo o1, Pojo o2) {
return Character.compare(o1.aChar, o2.aChar);
}
@Override
public boolean areItemsTheSame(Pojo item1, Pojo item2) {
return item1.id == item2.id;
}
ich mit Dubletten am Ende, wenn ich mehrere Artikel mit dem gleichen ID, aber unterschiedliche Zeichen hinzufügen.
sortedList.add(new Pojo(1, 'a'));
sortedList.add(new Pojo(1, 'b'));
Ich würde erwarten, dass die Liste das Element aktualisieren. Stattdessen habe ich jetzt mehrere Elemente, obwohl areItemsTheSame
true
zurückgegeben.
Liste kann Duplikate enthalten. Versuchen Sie es mit HashMap. –
Aus meiner Sicht nicht ["Wenn das Element bereits in der Liste vorhanden ist und seine Sortierkriterien nicht geändert werden, wird es durch das vorhandene Element ersetzt."] (Https://developer.android.com/reference/android/support/ v7/util/SortedList.html # hinzufügen (T)). Ich brauche keine HashMap, da ich die effiziente Kopplung mit RecyclerView benötige. –
Warum wird diese Frage mit einem Java-Tag versehen? – Boris