Ausgewähltes ListView-Element in Android hervorgehoben halten
In der Android-Entwicklung ist es oft wünschenswert, das ausgewählte Element in einer ListView hervorzuheben und gleichzeitig Details anzuzeigen des ausgewählten Elements in einer separaten ListView. Dieser Artikel befasst sich mit einem häufigen Problem im Zusammenhang mit diesem Szenario.
Problem:
Wenn ein Benutzer ein Element in einer ListView (lv_cli) auswählt, werden die Details des ausgewählten Clients angezeigt sollte in einer separaten ListView (lv_cli_det) angezeigt werden. Allerdings verliert dabei das vom Benutzer ausgewählte Element in lv_cli seine Hervorhebung.
Lösung:
Die Lösung liegt in der Verwendung des Attributs android:choiceMode="singleChoice". im XML-Layout. Dieses Attribut gibt das Auswahlverhalten für die ListView an, sodass jeweils nur ein Element ausgewählt werden kann. Der Hintergrund des ausgewählten Elements wird automatisch mit dem Attribut android:listSelector="#666666" hervorgehoben.
Code:
<ListView android:id="@+id/cli_lista" android:layout_width="512dp" android:layout_height="wrap_content" android:fadeScrollbars="false" android:choiceMode="singleChoice" android:listSelector="@color/my_selector" > </ListView>
Alternativ können Sie festlegen Diese Attribute programmgesteuert mithilfe der Methoden setSelector() und setChoiceMode() der ListView-Klasse.
Bei diesem Ansatz bleibt das ausgewählte Element in lv_cli hervorgehoben, während die Details des ausgewählten Clients in lv_cli_det angezeigt werden.
Wichtiger Hinweis:
Es ist wichtig, Ansichtshintergründe nicht direkt als Reaktion auf onItemClick-Ereignisse zu verwalten. Da es sich bei Ansichten um temporäre Objekte handelt, kann dieser Ansatz zu unvorhersehbarem Verhalten führen, wenn Elemente aus der Ansicht gescrollt und wiederverwendet werden.
Das obige ist der detaillierte Inhalt vonWie kann ich das in der ListView ausgewählte Element in Android hervorgehoben halten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!