How to set Listview alternate row color and selected item background color

user2740599 picture user2740599 · Oct 27, 2013 · Viewed 14k times · Source

I have one list view. I have assigned alternate row colors like below in adapter's getView() method :

if(position % 2 ==1)
{
convertView.setBackgroundColor(Color.rgb(231, 249, 255));
}
else
{
convertView.setBackgroundColor(Color.rgb(195, 240, 255)); 
}

Above code is working fine. Now I want to change the color of the selected list item. For that I have followed the below procedure:

I have created on listSelector xml like below:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

  <!-- Selected --> 
  <item 
    android:state_focused="true" 
    android:state_selected="false" 
    android:drawable="@drawable/focused"/> 

  <!-- Pressed -->
  <item 
    android:state_selected="true" 
    android:state_focused="false"
    android:drawable="@drawable/selected" /> 

</selector>

and I have assigned the above selector to my list as below:

myList.setSelector(R.drawable.list_selector);

But I am not getting selected list item color.

Can anyone please tell me how to set alternate row color and selected list item color to an android list.

Answer

Amit Gupta picture Amit Gupta · Oct 27, 2013

Try like this

artists_list_backgroundcolor.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
 <item 
 android:state_selected="false"
    android:state_pressed="false" 
    android:drawable="@color/normal" />
<item android:state_pressed="true" 
    android:drawable="@color/itemselected" />
<item android:state_selected="true"
 android:state_pressed="false" 
    android:drawable="@color/itemselected" />
</selector> 

colors.xml

<resources>

    <color name="normal">#ffffff</color>
    <color name="itemselected">#EDEDED</color>

</resources>

And use it in getView()

if (position % 2 == 0) {
        view.setBackgroundResource(R.drawable.artists_list_backgroundcolor);
    } else {
        view.setBackgroundResource(R.drawable.HERE_FOR_ALTERNATE);
    }

For reference Link

Hope this will help you.