2013-07-19 11 views
16

ich ein ListView in meinem Layout wie folgt verwenden:Abwahl ausgewählte Element in Listview

<ListView android:id="@+id/list" 
       android:layout_width="fill_parent" 
       android:layout_gravity="center" 
       android:layout_height="match_parent" 
       android:layout_weight="0.7" 
       android:layout_marginTop="5dp" 
       android:orientation="vertical" 
       android:layout_centerInParent="true" 
       android:divider="@color/dark_grey" 
       android:drawSelectorOnTop="false" 
       android:focusable="true" 
       android:layout_marginBottom="55dp" 
       android:cacheColorHint="#00000000" 
       android:listSelector="@color/light_grey" 
       android:dividerHeight="1px" /> 

Der Selektor funktioniert gut, aber wie kann ich die Wähler zu deaktivieren?

Ich habe versucht:

listView.clearChoices(); 
listView.setSelected(); 
listView.setSelector(); 
... 

und noch ein paar Dinge, aber nichts funktioniert. Irgendwelche Ideen, wie ich meinen ausgewählten Gegenstand wieder normal machen kann? Kann nicht so kompliziert sein, oder?

Edit: Ich brauche eine programmatische Lösung!

Danke!

+1

Vielleicht leiden Sie unter diesem Fehler http://StackOverflow.com/Questions/9754170/Listview-Selection-RemainsPersistent-After-Exiting-Choice-Mode –

+0

Ja, beim Aufruf von 'requestLayout()' nach 'clearChoices() 'Es funktioniert. Wenn Sie eine anwer Post akzeptieren Ich werde es – Ron

Antwort

32

Rufen Sie requestLayout() auf der ListView nach clearChoices(). Es wird klappen.

+8

für mich arbeitete mit 'adapter.notifyDataSetChanged()' 'nach clearChoices()' –

+0

für mich mit listviewObject.clearChoices gearbeitet() nach adapterObject.notifyDataSetChanged() – GFPF

+0

'adapter.notifyDataSetInvalidated()' Werke für ** ** ExpandableListView – samosaris

0

In Ihrem XML, wo Sie die Listview-Anwendung erklären:

<ListView android:id="@+id/my_list" android:listSelector="#00000000" /> 
+0

Ja, aber ich möchte, dass meine Wähler wieder arbeiten für die nächste Klick auf einen Listeneintrag ... wenn ich dies tun, dann unsichtbar der Wähler ist, nicht wahr? – Ron

+0

Oh vielleicht [diese] (http://stackoverflow.com/questions/2038040/android-listview-selector-color) kann helfen .. –

0

Sie einen Selektor nach Klick einstellen:

<?xml version="1.0" encoding="utf-8"?> 

<item android:drawable="@drawable/transparent_white" android:state_focused="true" android:state_pressed="true"/> 
<item android:drawable="@drawable/transparent_white" android:state_focused="false" android:state_pressed="true"/> 
<item android:drawable="@drawable/transparent_white" android:state_focused="true"/> 
<item android:drawable="@drawable/transparent_white" android:state_focused="false"/> 

und das @ drawable/transparent_white ist # 00ffffff

0

versuchen diese

Erstellen Sie Ihre eigenen Wähler XML-Datei wie diese

YourSelector.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_enabled="false" android:state_focused="true" 
     android:drawable="@drawable/item_disabled" /> 
    <item android:state_pressed="true" 
     android:drawable="@drawable/item_pressed" /> 
    <item android:state_focused="true" 
     android:drawable="@drawable/item_focused" /> 
</selector> 

Check out this link

here

11

Wie @Muerte oben erwähnt, macht das für mich gearbeitet folgende:

myListView.clearChoices(); 
myAdapter.notifyDataSetChanged(); 

, der wie es scheint besser wäre, das gesamte Layout als neu erstellt.

+0

für mich mit listviewObject.clearChoices gearbeitet() nach adapterObject.notifyDataSetChanged() – GFPF

3

Für mich ist es arbeitete mit:

listView.setAdapter(myAdapter); 
+1

Danke . Nachdem ich so viele verschiedene Wege versucht hatte, funktionierte das für mich. – rastik

+0

Das hat bei mir funktioniert. Alle anderen Vorschläge haben nicht funktioniert. Ich bin mir nicht sicher, warum sie es nicht taten, aber vielleicht seine weil ich rufe myAdapter.notifyDataSetChanged() in der onItemClick() -Prozedur. – zappullae

0

Nichts der Lösungen für mich tatsächlich gearbeitet. Meine Listenansicht dient zum Auflisten der gesuchten Objekte und enthält eine Bestimmung, um die Suche zu wiederholen. Beim Abrufen des Ergebnisses habe ich das folgende Code-Snippet hinzugefügt und es funktionierte :)

myAdapter.setSelectedIndex (-1);

0

Ihre Selektor-Ressource scheint hier falsch zu sein.Sie sollten eine ziehbar mit transparentem Hintergrund, und ich denke, das ist, was Ihre Zeilen tatsächlich Farben, aber nicht choiceMode der ListView. Bitte überprüfen Sie this eine andere Antwort für weitere Details.