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 № 1dlaczego 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"
/>