Ich habe Code zum Erstellen einer gruppierten Liste für eine ListView in Xamarin Forms, die aus irgendeinem Grund nur manchmal entfernt eine Gruppe aus der Liste, wenn es leer ist.Nicht alle leeren Listen werden aus ObservableCollection entfernt?
char[] alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray();
var animals = new List<string>() { "Jaguar", "Elephant", "Nemo", "Cat", "Dog", "Iguana", "Puma", "Crow", "Hawk", "Owl", "Badger", "Meerkat", "Lion", "Tiger", "Rabbit", "Pig" };
var groups = new ObservableCollection<GroupedItemModel>();
for (int i = 0; i < alpha.Length; i++)
{
groups.Add(new GroupedItemModel(alpha[i].ToString()));
}
foreach (var _group in groups)
{
foreach (var _animal in animals)
{
if (_animal[0].ToString().ToUpper() == _group.GroupName.ToUpper())
{
_group.Add(_animal);
}
}
}
for (int i = 0; i < groups.Count; i++)
{
if (groups[i].Count == 0)
{
groups.RemoveAt(i);
}
}
ListSource = groups;
Dies geschieht jedoch:
Warum diese Gruppen nicht entfernt werden? Irgendwelche Lösungen?
Sie sind sicher, dass Sie eine leere Liste nicht initialisieren. Vielleicht entfernt es Nullen, aber keine leeren Listen. Nur eine Vermutung. – Emad
Wenn Sie eine Sammlung ändern, während Sie sie durchlaufen, funktioniert das normalerweise nicht so, wie Sie es erwarten. Ein besserer Ansatz wäre, einmal zu iterieren und eine neue Liste der zu entfernenden Elemente zu erstellen. Nachdem Sie die Iteration abgeschlossen haben, löschen Sie alle Elemente auf einmal – Jason