2013-07-19 17 views
16

Io uso un ListView nel mio layout simile a questo:Deseleziona elemento selezionato 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" /> 

Il selettore di grandi opere, ma come posso disattivare il selettore?

ho provato:

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

e un paio di cose, ma nulla funziona. Qualche idea su come posso riportare il mio oggetto selezionato alla normalità? Non può essere così complicato, giusto?

Modifica: Ho bisogno di una soluzione programmatica!

Grazie!

+1

Possibile soffro di questo bug http://stackoverflow.com/questions/9754170/listview-selection-remains-persistent-after-exiting-choice-mode –

+0

Sì, quando si chiama 'requestLayout()' dopo 'clearChoices() 'funziona. Se pubblichi un anwer lo accetterò – Ron

risposta

32

Chiama requestLayout() su ListView dopo clearChoices(). Funzionerà.

+8

per me ha funzionato con 'adapter.notifyDataSetChanged()' dopo 'clearChoices()' –

+0

per me ha lavorato con listviewObject.clearChoices() dopo adapterObject.notifyDataSetChanged() – GFPF

+0

'adapter.notifyDataSetInvalidated()' lavori per ** ** ExpandableListView – samosaris

0

Nel vostro XML in cui si dichiara l'uso ListView:

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

sì, ma voglio che il mio selettore funzioni di nuovo per il prossimo clic su un elemento della lista ... se lo faccio allora il selettore è invisibile, giusto? – Ron

+0

Oh forse [questo] (http://stackoverflow.com/questions/2038040/android-listview-selector-color) può aiutare .. –

0

È possibile impostare un selettore, dopo clic:

<?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"/> 

e la @ drawable/transparent_white è # 00ffffff

0

provare questo

creare il proprio file XML di selezione come questo

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> 

controlla questo link

here

11

Come @Muerte accennato in precedenza, effettuando le seguenti ha lavorato per me:

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

che sembra che sarebbe meglio di ridisegnare l'intero layout.

+0

per me ha lavorato con listviewObject.clearChoices() dopo adapterObject.notifyDataSetChanged() – GFPF

3

Per me ha funzionato con:

listView.setAdapter(myAdapter); 
+1

Grazie . Dopo aver provato così tanti modi diversi, questo ha finalmente funzionato per me. – rastik

+0

Questo ha funzionato per me. Tutti gli altri suggerimenti non hanno funzionato. Non sono sicuro del motivo per cui non l'hanno fatto, ma forse perché sto chiamando myAdapter.notifyDataSetChanged() nel gestore onItemClick(). – zappullae

0

Nulla delle soluzioni effettivamente lavorate per me. La mia lista è per elencare gli oggetti cercati e ha una disposizione per rifare la ricerca. Su come ottenere il risultato ho aggiunto il seguente frammento di codice e ha funzionato :)

myAdapter.setSelectedIndex (-1);

0

La risorsa del selettore sembra essere sbagliata qui.Dovresti usare un drawable con sfondo trasparente, e penso che questo sia ciò che effettivamente colora le tue righe, ma non lo choiceMode dello ListView. Si prega di controllare this un'altra risposta per maggiori dettagli.

Problemi correlati