2012-02-23 184 views
0

我创建了一个列两个背景颜色逐行的ListView。然后我需要改变它的背景颜色,当点击项目,并回到它自己的颜色损失聚焦项目。 我试着用下面的代码和view.setBackgroundResource()在ItemClickListener方面不能正常工作。Android - ListView行背景颜色变化

if (selectedView != null) { 
    if (selectedRowIndex % 2 == 0) { 
     view.setBackgroundResource(R.color.list_secondcolor); 
    } else { 
    view.setBackgroundResource(R.color.list_firstcolor); 
    } 
    }selectedRowIndex = position; 
    selectedView = view;view.setBackgroundColor(Color.WHITE); 

是否有任何其他可能的方式来做到这一点? 在此先感谢。

+0

该视图首先调用'setBackgroundResource',然后调用'setBackgroundColor'也许是它的原因,请尝试删除一个。 – idiottiger 2012-02-23 09:59:46

+0

你有任何listitems颜色集?或者你正在获得所有与白色背景? – Hiral 2012-02-23 10:03:59

+0

编号在失去焦点之后,它不会转到其以前的颜色。 – 2012-02-23 10:07:09

回答

1

您可以通过XML轻松完成此操作。你必须定义一个具有不同状态的drawable。在你的情况下,由于列表项的背景颜色应该交替出现,所以你必须定义两个可绘制的。

在此可绘制项中,您可以定义列表项可以具有的不同状态的颜色。正常,集中,按下,聚焦和按下。然后,只需将此可绘制应用于列表项的背景属性即可。

<?xml version="1.0" encoding="utf-8"?> 
     <selector xmlns:android="http://schemas.android.com/apk/res/android"> 
      <!-- default --> 
      <item android:drawable="@color/normal_color" /> 
      <!-- focused --> 
      <item android:state_focused="true" android:drawable="@color/focused_color" /> 
      <!-- pressed --> 
      <item android:state_pressed="true" android:drawable="@color/pressed_color" /> 
      <!-- focused and pressed--> 
      <item android:state_focused="true" android:state_pressed="true" android:drawable="@color/focused_pressed_color" /> 
     </selector>