Android - ListView行背景颜色变化

时间:2012-02-23 09:54:44

标签: android listview background-color

我逐行创建了一个带有两种背景颜色的ListView。然后我需要在点击项目时改变它的背景颜色,然后回到它自己的颜色损失聚焦项目。 我尝试使用下面的代码并且view.setBackgroundResource()在ItemClickListener中没有正常工作。

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

还有其他可能的方法吗? 提前谢谢。

1 个答案:

答案 0 :(得分:1)

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

在此drawable中,您可以为列表项可以具有的不同状态定义颜色。正常,聚焦,按压,聚焦和按压。然后,您只需将此drawable应用于列表项的background属性。

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