Ich habe zwei ListViews (A und B) mit Elementen des gleichen Typs (eine Klasse, die ich erstellt habe)
Wenn ich auf ein Objekt von A klicke, fügt es dieses Objekt auf B hinzu und wenn ich erneut klicke, wird es entfernt. Nur wenn ein Element ausgewählt ist, ändere ich seinen Hintergrund mit view.setBackgroundColor (myColor).
Ich möchte das Objekt aus der Liste B entfernen können (es funktioniert), aber ich möchte auch die Hintergrundfarbe zurücksetzen. Ich kann nicht herausfinden, wie ich den Blick auf diesen Gegenstand bekomme, den ich entferne.
Irgendwelche Ideen?
Es gibt keine Garantie, dass ein bestimmtes ListView-Objekt zu einem bestimmten Zeitpunkt überhaupt eine Ansicht enthält. Wenn das Objekt derzeit nicht auf dem Bildschirm angezeigt wird, verfügt es möglicherweise nicht über eine Ansicht. Da ein bestimmtes Objekt möglicherweise keine Ansicht hat, macht es möglicherweise keinen Sinn, die Ansicht des Objekts zu sehen.
Darüber hinaus werden Sie aufgrund der Art und Weise, wie ListView Ansichten erstellt und wieder verwendet, einige seltsame, unerwünschte Effekte sehen, wenn Sie die Ansichten einfach direkt ändern. Wenn der Benutzer durch die Liste scrollt, werden Elemente, die sichtbar werden, fälschlicherweise mit denselben Hintergründen enden wie andere Elemente, die außerhalb des sichtbaren Bereichs liegen.
Ich weiß nicht, ob das, was folgt, der beste Weg ist, um Ihre Funktionalität zu implementieren, weil ich die Kosten für den Wiederaufbau der Liste nach einer Änderung nicht kenne. Hier ist die (wahrscheinlich naive) Art, wie ich das tun würde:
isInSecondList
. getView()
im Adapter. Setzen Sie in getView()
den Hintergrund auf normal oder hervorgehoben, abhängig vom Wert des isInSecondList
des Elements. notifyDataSetChanged()
des Adapters auf.