Liste hervorheben Ausgewählte Zeile anzeigen
Habe ich eine Liste der Alben (mehrere hundert).
Wenn ich berühren Sie das ausgewählte album möchte ich dem user eine Auswahl von spielen das ganze album, oder sich an seinem track ListView. Kein problem.
Jedoch, nach der Berührung mit dem ablum in albumListView ich möchte die Zeile bleibt markiert, damit der Anwender weiß, welches Objekt Sie geklickt haben, und verschieben Sie dann auf OK oder WIEDERGABE. Wie kann ich die markieren Sie eine Zeile im ListView?
InformationsquelleAutor der Frage | 2011-02-20
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zitiert aus http://android-developers.blogspot.de/2008/12/touch-mode.html
InformationsquelleAutor der Antwort Maaalte
Andere Lösung (meist in XML)
1) stellen Sie den
choiceMode
desListView
zusingleChoice
2) Elemente der Liste müssen eine Überprüfbar ist Anzeigen und verwenden eine Farbe Status-Liste als Hintergrund
zB: album_item.xml
3) die Hintergrundfarbe Zustand (
list_selector.xml
) definiert die Farbe für die HervorhebungInformationsquelleAutor der Antwort Hiep
Maaalte korrekt ist, wird im touch-Modus Listen zeigen nicht die Fokus-Markierung auf einer aktuellen Element, da es kein Aktuelles Element im touch-Modus. Stateful Auswahl, wie Sie beschreiben, besteht, während der Interaktion mit anderen teilen des UI ist eine andere Sache aber.
Können Sie CHOICE_MODE_SINGLE zum Ausdruck bringen, eine stateful-Auswahl in einer Liste. Es behandelt die Auswahl als checked-Zustand. Wie lange der Ansicht, dass Ihre adapter gibt, implementiert die Abfragbare Schnittstelle, Sie können anzeigen, die den ausgewählten Zustand jedoch, die Sie wählen. (Einstellung der hintergrund des Elements anzuzeigen oder sonst. Es ist nicht wirklich brauchen, um eine check-box-widget.) Sie können dann das Element aktiviert Methoden der ListView zu verändern oder bestimmen die Auswahl.
InformationsquelleAutor der Antwort adamp
Ich löste dies durch die Verlängerung der ListView und überschreiben der getView () - Methode. Ich hielt einen internen Bezeichner, der für die "ausgewählt" - Zustand verändert und der hintergrund der Sache nach wie folgt:
Habe ich ein Beispiel-Programm auf meinem blog post:
http://udinic.wordpress.com/2011/07/01/selectablelistview-make-selection-work/
InformationsquelleAutor der Antwort Udinic
Hier ist meine Lösung
Listview:
Schreiben Sie einen Selektor für list_row als
Stellen Sie sicher, Sie haben Artikel für state_activated=true
Fügen Sie diesen Selektor, als Ihre list_row hintergrund
InformationsquelleAutor der Antwort subair_a
hinzufügen
android:background="?activatedBackgroundIndicator
Liste Element das Haupt-layout ähnelt
android.R.layout.simple_list_item_activated_2.xml
InformationsquelleAutor der Antwort denis
Implementieren Sie Ihre Liste mit den single-choice-Modus:
android:choiceMode=singleChoice
Nur als Standard -
android.R.layout.simple_list_item_single_choice
verwendet eineRadioButton
zu bezeichnen, die Auswahl, können Sie implementieren eine benutzerdefinierte Hervorhebung Staat oder ähnlich in der Liste Element-layout zu reagieren, um die Auswahl ändert. Methoden wiegetCheckedItemPosition()
werden können, die von Ihrer Anwendung verwendet werden, um zu bestimmen, welches Element der Benutzer aktuell gewählt hat, wenn nötig.Hoffe, das Hilft!
InformationsquelleAutor der Antwort Devunwired
Ich weiß, dass es zwei Jahre her, dass diese Frage, die zuletzt aktiv war, aber nur für den Fall jemand anderes muss es in der Zukunft. Hier ist meine ListView xml-code
Den Sie ändern möchten die
android:listSelector
Wert.InformationsquelleAutor der Antwort jrsall92
Folgende Lösung kann eingesetzt werden für die Hervorhebung der einen oder auf viele Einträge. Ausgangspunkt: Es ist ein ListFragment zeigen eine Liste der MyEntity über einen ArrayAdapter Umsetzung. Die Farbe eines TextView als Teil der Artikel layout verändern, zu Grau, wenn das Element ausgewählt ist. Mehrere Elemente sollten auswählbar sein.
Dem ListFragment muss eine OnItemSelectListener(YourEntity Element), das aufgerufen wird, in onListItemClicked().
Den ArrayAdapter besitzt eine Liste für die Schlüssel-Felder für den ausgewählten Artikel und stellt die manager-Methoden addSelection(MyEntity) und clearAllSelections(). Der überschreiben-Methode getView() liest den Schlüssel (Feld, Liste, und, wenn die tatsächliche position ist es, änderungen, die insbesondere TextView Farbe zu Grau, ansonsten transparent.
In der onCreate() des besitzenden Aktivität der Zuhörer muss umgesetzt werden, zum verwalten der ArrayAdapter: Aufruf addSelection() und notifyDataSetChanged().
InformationsquelleAutor der Antwort Christian Schulzendorff
Ich hatte das gleiche problem, ich löste es durch einfügen den folgenden code in das ListView-code
Die xml-Datei sieht wie im folgenden
InformationsquelleAutor der Antwort Rijul Gupta
In meinem Fall, bei der Verwendung von simple_list_item_2, die einzige Lösung war, um das überschreiben der getView() Methode des Adapters, und ändern Sie einfach die Hintergrundfarbe manuell:
Denken Sie daran rufen Sie die Listenansicht.invalidateViews() auf, wenn Sie ändern Sie das ausgewählte Element.
InformationsquelleAutor der Antwort CpnCrunch
Hier ist, was ich habe 🙂 - nach großen Kopf schlagen gegen die Wand.
Für den adapter:
Für die row_layout.xml:
Zum einstellen einer vorgegebenen position hervorgehoben werden, nur tun dies, um Ihre listView-Objekt:
radioTitleList.setItemChecked(defaultPosition, true);
Wenn Sie möchten markieren, wenn Sie klicken Sie auf die Liste:
In Ihrem getView() in Ihrer benutzerdefinierten Liste-adapter fügen Sie diese vor der Rückgabe der Ansicht:
InformationsquelleAutor der Antwort ryvianstyron