/ / ListView непарний парний рядок xml - android, android-listview, android-xml

ListView Odd Even рядок xml - android, android-listview, android-xml

Це мій перегляд списку

<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>

Я встановив фон рядка в списку переглядів як парний і непарний наступним чином:

/*
* 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);

Тепер, коли я вибираю парний або непарний рядок, я хочу, щоб фоновий ресурс змінився.

Тож у 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>

та 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>

коли я запускаю перегляд списку на пристрої та вибираю парні або непарні рядки, нічого не відбувається. хтось знає, чому і який правильний спосіб це зробити на основі моєї відповіді.

Відповіді:

0 для відповіді № 1

Я не думаю, що селектор буде хорошим варіантом для вашого випадку. Звичайно, ви можете використовувати селектор, щоб він змінив колір при натисканні. Ваш селектор буде виглядати так

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

але кожен рядок селектора не знатимеінші ряди. Якщо ви хочете, щоб кожен раз вибирався один елемент, вам доведеться повторити інші подані рядки та повернути їх до стандартних кольорів. Краще помістіть цей чек у свій пункт onclicklistener:

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);
}
}
}
}
}