Wie man den Blick auf ein ListView-Element?
Habe ich zwei ListViews (A und B) mit Gegenständen der gleichen Art (Klasse I erstellt)
Wenn ich auf ein Element von A, es fügt dieses Objekt auf B und wenn ich auf erneut es entfernt.
Nur, dass, wenn ein Element ausgewählt ist, ändere ich seinen hintergrund mit Blick.setBackgroundColor(myColor).
Ich möchte in der Lage sein zu entfernen das Element aus der Liste B (es funktioniert), aber ich möchte auch das zurücksetzen der Hintergrundfarbe. Ich kann nicht herausfinden, wie man die Ansicht von dieser Sache bin ich entfernen.
Irgendwelche Ideen?
- Wenn Sie zeigen uns etwas von deinem code (den relevanten Teil), es wird viel leichter sein, Ihnen zu helfen.
- Ich vergaß zu erwähnen, ich benutze tabs, um zwischen den Listen wechseln. Über den code, da gibt es nicht viel komplizierter, erweiterte ich ArrayAdapters, und onClick verwende ich anzeigen.setBackgroundColor(myColor)
InformationsquelleAutor Lucas | 2011-03-25
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es keine Garantie dafür, dass bestimmte ListView-Element wird sogar eine Ansicht zu einem bestimmten Zeitpunkt. Wenn der Artikel ist zur Zeit off-screen, dann kann es nicht mit Blick auf. Da ein bestimmtes Element möglicherweise nicht im Blick hat, wird es vielleicht keinen Sinn, zu versuchen, um das Element anzuzeigen.
Darüber hinaus, weil der Weg ListView erstellt und wiederverwendet, Ansichten, sehen Sie einige seltsame, unerwünschte Auswirkungen, wenn Sie ändern Sie einfach die Aussicht direkt. Wie der Benutzer führt einen Bildlauf durch die Liste, die Elemente, die sichtbar falsch am Ende mit den gleichen Hintergründen wie andere Elemente, die gefallen sind, die außerhalb des sichtbaren Bereichs.
Ich weiß nicht, ob das, was folgt, ist der beste Weg, um Ihre Funktionalität, da weiß ich nicht, die Kosten des Wiederaufbaus der Liste nach einer änderung. Hier ist die (wahrscheinlich naive) Art und Weise, ich würde dies tun:
isInSecondList
.getView()
in den Adapter. IngetView()
, den hintergrund entweder normal oder hervorgehoben-je nach dem-der Wert des Gegenstands derisInSecondList
.notifyDataSetChanged()
.Hier ist, was ich Tat
View newsItemView = mGridVIew.getChildAt(position);
sein, weil der, dass in der Liste anzeigen berechnen der position von oben betrachtete Punkt im Bildschirm nicht in der Liste