2013-07-05 90 views
1

這是我的ListView的ListView奇數偶數排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

什麼是'vi',你把這段代碼放到哪裏? – Neoh

+0

@Neoh獲取Apdater的視圖? – Blackbelt

+0

我使用getView和vi = convertView; – Dimitri

回答

0

我不認爲選擇器將是一個很好的選擇你的情況。當然,您可以使用選擇器在按下時更改顏色。您的選擇器將如下所示

<?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); 
       } 
      } 
     } 
    } 
} 
+0

是的,但我想imageview小部件改變背景資源不奇怪的偶數顏色 – Dimitri

+0

我的例子顯示'顏色'資源。它也可以是可繪製的資源。他們的工作是一樣的。 – Neoh