2013-07-05 130 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