2013-07-19 14 views
16

używam ListView w moim układzie tak:Odznacz wybrany element w 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" /> 

Selektor działa świetnie, ale jak mogę wyłączyć selektor?

Próbowałem:

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

i jeszcze kilka rzeczy, ale nic nie działa. Jakieś pomysły, jak przywrócić normalny stan wybranego elementu? Nie może być to takie skomplikowane, prawda?

Edytuj: Potrzebuję programowego rozwiązania!

Dzięki!

+1

Może cierpią na ten błąd http://stackoverflow.com/questions/9754170/listview-selection-remains-persistent-after-exiting-choice-mode –

+0

Tak, wywołując 'requestLayout()' after 'clearChoices() 'to działa. Jeśli opublikujesz anwer, zaakceptuję to jako – Ron

Odpowiedz

32

Zadzwoń pod numer requestLayout() pod numerem ListView po . To będzie działać.

+8

dla mnie to działało z 'adapter.notifyDataSetChanged()' po 'clearChoices()' –

+0

dla mnie pracował z listviewObject.clearChoices() po adapterObject.notifyDataSetChanged() – GFPF

+0

'adapter.notifyDataSetInvalidated()' prace dla ** ExpandableListView ** – samosaris

0

W swojej XML, w którym deklarują korzystanie ListView:

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

tak, ale chcę, aby mój selektor ponownie zadziałał dla następnego kliknięcia elementu listy ... jeśli to zrobię, selektor jest niewidoczny, prawda? – Ron

+0

Och, może [to] (http://stackoverflow.com/questions/2038040/android-listview-selector-color) może pomóc .. –

0

Można ustawić selektor po kliknij:

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

a @ drawable/transparent_white to # 00ffffff

0

spróbować

utworzyć własny plik xml selektor jak ten

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> 

Sprawdź to łącze

here

11

Jak wspomniano powyżej @Muerte, wykonując następujące czynności pracował dla mnie:

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

To wydaje się jakby to byłoby lepsze niż odświeżanie cały układ.

+0

dla mnie pracował z listviewObject.clearChoices()() po adapterObject.notifyDataSetChanged – GFPF

3

Dla mnie to działało z:

listView.setAdapter(myAdapter); 
+1

Dziękuję . Po tak wielu różnych próbach, w końcu to dla mnie zadziałało. – rastik

+0

To zadziałało dla mnie. Wszystkie inne sugestie nie działały. Nie jestem pewien, dlaczego nie, ale być może dlatego, że wywołuję myAdapter.notifyDataSetChanged() w module obsługi onItemClick(). – zappullae

0

nic z rozwiązań rzeczywiście pracował dla mnie. Mój listview służy do wystawiania list wyszukanych przedmiotów i ma przepis na ponowienie wyszukiwania. Po otrzymaniu wyniku dodałem następujący fragment kodu i zadziałało :)

myAdapter.setSelectedIndex (-1);

0

Twój wybrany selektor wydaje się tu niepoprawny.Powinieneś użyć rysowania z przezroczystym tłem i myślę, że to właśnie tak naprawdę koloruje twoje wiersze, ale nie choiceMode z . Proszę sprawdzić this inną odpowiedź, aby uzyskać więcej informacji.

Powiązane problemy