Zitat von
Phoenix:
Der Sender ist das Toolbar-Item, und das hat nirgendwo die Id des Elements in der Liste.
Stimmt, sorry, gar nicht bedacht.
Zitat von
Phoenix:
Ich will aus Performancegründen vermeiden, dass ich bei jedem OnClick erstmal den Namen des Elementes vom Sender auslesen muss, in der Datenbank nach der passenden Id suche und dann weitermache. ... Zudem kann der Name zweideutig sein - und dann hab ich ein massives Problem das richtige Element zu finden.
Der Weg der mir noch einfällt ist vielleicht nicht der perfomanteste, aber zumindest, entfällt die Doppeldeutigkeit. So erzeugst Du ja bereits in der Schleife die Objekte, die Du auf der Toolbar platzierst. Meine letzte Idee wäre hier, dass Du eine Verknüpfung zwischen abgespeicherter ID und diesem erzeugten Objekt erstellst und in einem anderen Objekt speicherst. Dazu würde ich entweder auf den Index des jeweiligen Elements (dass Du ja gerade erzeugt hast) zugreifen (soweit das möglich ist) und z.B. in einem Array oder (wenn .net das unterstützt) in einer ArrayList ablegen. Hier kannst Du dann mit sehr geringem Aufwand (konstant) gezielt die ID zu einem Element abfragen.
Ist das mit dem Array nicht möglich (z.B. weil sich die Positionen ändern können), dann kannst Du alternativ auch auf die Hash-Funktion des Objekts zurückgreifen. Was auch immer angeklickt wird, lässt sich (afaik) über das Eventarg ermitteln. Dieses Objekt hat einen Hash und es gibt bestimmt auch eine HashMap. Auch damit hast Du eine eindeutige Zuordnung, die nicht über den Namen sondern über das ausgewählte Objekt läuft und mit einer ID fest verknüpft werden kann (Änderungen bleiben natürlich auch möglich).