TopItem der ListView

Aufgabeninfo

Projekt: 

Typ: 

Schwerer Fehler

Betroffene Version: 

Zielversion: 

Status: 

Geschlossen

Lösung: 

Wird nicht behoben

Erledigt in Version: 

Sobald die ListView neu aufgebaut werden muss, setzt sich die Position von der ListView zurück. Durch die Gruppen kommt obendrauf, dass das TopItem scheinbar immer das erste Item und nicht das obere sichtbare Item ist. Dadurch funktioniert die bisherige "Lösung" gar nicht mehr.

Speziell, wenn durch Drag&Drop die Liste neu aufgebaut werden muss, dann müssen die Items auch immer an der gleichen Position sein. Leider kann die ListView so etwas von hause aus nicht. Das muss aber irgendwie gemacht werden. Ohne geht das gar nicht.

Kommentare

Durch die Gruppen

Durch die Gruppen der ListView gibt es gar kein richtiges TopItem mehr. Es könnte sein, dass nur die Hälfte eines Items sichbar ist. Das sollte natürlich auch genau an der Stelle bleiben wo es ist. Eventuell würde es ja reichen, wenn ich die Position der Scrollbar auslese und wieder setze. Alternativ könnte es auch ausreichen, wenn ich die Einträge nicht lösche und neu erzeuge sondern den vorhandenen Einträge neue Werte zuweise und wenn nötig die Anzahl anpasse. Dadurch wird wohl auch der Aufwand zum aktualisieren der Liste verringert. Mal test ob sich das halbwegs machen lässt.

Nach wie vor müsste es aber möglich sein, dass man einen Eintrag sichtbar macht. Wenn man die Suchmaske löscht, dann sollte der ausgewählte Eintrag auch im Blickfeld sein. Dazu muss dann auf das Scrollen zurück gegriffen werden.

(Kein Betreff)

Aufgabeninfo

Status: 

Zugewiesen

In diesem Zusammenhang wurde

In diesem Zusammenhang wurde das Aufbauen der ListView Einträge neu gestalltet. Die Einträge werden nun nicht mehr gelöscht und neu erstellt. Sondern es wird deren Inhalt angepasst und nach unten verschoben (beim Ausklappen einer Box) bzw einzeln Einträge gelöscht (Zuklappen einer Box). Dadurch bleibt die Position der ListView bei Veränderungen halbwegs an der gleichen Stelle und das Aufklappen von Sammelboxen geht außerdem auch schneller.

Hier muss aber noch berücksichtigt werden, dass die Ansicht verschoben werden muss, wenn neue Filme über dem sichtbaren Ausschnitt erzeugt/gelöscht wurden. Damit sich die Position des aktuellen Ausschnittes nicht verschiebt. Dazu muss das TopItem ausgelesen werden und anschließend entsprechend relativ dazu gescrollt werden. Eventuell braucht man hier mehr als eine Eigenschaft TopItem sondern eine Struktur aus TopItem und relativem Offset.

Wenn man von einem Film auf dessen Sammelbox springt (Cursor links) dann springt zwar der Fokus aber die Ansicht verändert sich nicht. Damit ist der ausgewählte Einträg eventuell außerhalb des sichtbaren Bereiches.

Da hinzu kommt, dass die ListView derzeit noch zu weit nach oben scrollt. Sobald die Größe der angezeigten Filme von "größer als ListView" auf "kleiner als ListView" wechselt scrollt die ListView über den Nullpunkt der Scrollbar hinweg und der oberste Einträgt hängt irgendwo in der Luft und lässt sich nicht mehr verschieben.

Ich würde nicht sagen, dass

Aufgabeninfo

Status: 

Geschlossen

Lösung: 

Wird nicht behoben

Ich würde nicht sagen, dass das Problem mit dem TopItem gelöst ist. Aber ich gebe es auf. Die ListView hat ein gewisses "Eigenleben" was das Scrollen angeht. Scrollaktionen werden nicht präzise durchgeführt. Keine Chance das sinnvoll Lösen zu können. Es ist nur im Grenzbereich (wenn Itemhöhe von größer als ClientHeight auf kleiner als ClientHeight wechseln) Problematisch. Das aber auch nur beim Zuklappen von Sammelboxen. Bzw das Aktualisieren der Liste mit <F5> arbeitet auch nicht präzise.

Einzige Lösung wäre die ListView komplett zu ersetzen. Und den Aufwand scheue ich ein wenig. Zu mal es nur in Grenzfällen auftritt. Andere Lösung ist drücken von <F5>. Dann ist die Ansicht auch wieder in Ordnung.