/ / ListView Nieparzysty Parzysty wiersz xml - android, android-listview, android-xml

ListView Odd Nawet wiersz xml - android, android-listview, android-xml

To jest mój widok listy

<ListView
android:id="@+id/lvRMultiple"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="52"
android:divider="@color/white"
android:scrollingCache="false" >

</ListView>

Ustawiam tło wiersza w widoku listy jako parzyste i nieparzyste w następujący sposób:

/*
* CHANGE ROW COLOR 0 WHITE 1 GRAY
*/

if ( position % 2 == 0) //0 even 1 odd..
vi.setBackgroundResource(R.drawable.listview_selector_odd);

else
vi.setBackgroundResource(R.drawable.listview_selector_even);

Teraz, gdy wybieram parzysty lub nieparzysty wiersz, chcę zmienić zasób w tle.

Tak więc w listview_selector_odd.xml

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

<item android:drawable="@drawable/ic_launcher" android:state_pressed="false"/>


</selector>

i listview_selector_even.xml

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

<item android:drawable="@drawable/even_row" android:state_pressed="false"/>

</selector>

kiedy uruchamiam mój widok listy na urządzeniu i wybieram parzyste lub nieparzyste wiersze, nic się nie dzieje. czy ktoś wie dlaczego i jaki jest właściwy sposób, aby to zrobić na podstawie mojej odpowiedzi?

Odpowiedzi:

0 dla odpowiedzi № 1

Nie sądzę, że selektor będzie dobrym rozwiązaniem dla twojego przypadku. Jasne, możesz użyć selektora, aby zmienić kolor po naciśnięciu. Twój selektor będzie wyglądał tak

<?xml version="1.0" encoding="utf-8" ?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_selected="true"
android:drawable="@color/odd_pressed_color"/>
<item
android:drawable="@color/odd_default_color" />
</selector>

ale każdy wiersz selektora nie będzie miał wiedzyinne rzędy. Jeśli chcesz wybrać tylko jeden element za każdym razem, musisz powtórzyć pozostałe widoki wierszy i przywrócić ich domyślne kolory. Lepiej umieścić ten czek w swoim elemencieclicklistener:

listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> parent, View view,int position, long id) {

for (int i = 0; i < parent.getCount(); i++) {
if(i != position) {
if ( i % 2 == 1) {//0 even 1 odd..
parent.getChildAt(i).setBackgroundResource(R.drawable.odd_default_color);
else {
parent.getChildAt(i).setBackgroundResource(R.drawable.even_default_color);
}
}
}
}
}