/ / Jak kolorować wybrany element ListView na Androida w metodzie onListItemClick - java, android, listview

Jak kolorować wybraną pozycję ListView na Androidzie w metodzie onListItemClick - java, android, listview

Wiem, że znane pytanie brzmi trochę inaczej. Wdrażam ListView na Androida. Ta metoda powinna kolorować element po kliknięciu.

@Override
protected void onListItemClick(ListView l, View v, int position, longid) {
super.onListItemClick(l, v, position, id);
Language lng = lng.get(position);
l.getChildAt(position).setBackgroundColor(Color.GREEN);
}

Mój problem polega na tym, że kiedy klikam na przedmiot, niektóre inne przedmioty są kolorowane. dlaczego tak się dzieje?

Odpowiedzi:

1 dla odpowiedzi № 1

dlaczego tak się dzieje?

To się stało z powodu Mechanizm recyklingu ListView.

I czy istnieje różnica między l.getChildAt (pozycja), aby wyświetlić v samo ?

Nie.


Aby rozwiązać Twój problem, sugeruję użycie a Selektor aby zmienić kolor wierszy w zależności od stanu.

na przykład:

1) Utwórz plik xml selektora: listview_selector.xml

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

<selector xmlns:android="http://schemas.android.com/apk/res/android" >

<item
android:state_focused="true"
android:drawable="@drawable/listview_selector_focused" />

<item
android:state_pressed="true"
android:drawable="@drawable/listview_selector_pressed" />

</selector>

2) Dodaj selektor do swojego ListView:

<ListView
...
android:listSelector="@drawable/listview_selector"
/>