Home » Android » Android Alternate row Colors in ListView

Android Alternate row Colors in ListView

Posted by: admin April 23, 2020 Leave a comment

public class ListView extends  ListActivity {

static String item;

public void onCreate(Bundle icicle) {

            ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, Str.S);


This is my list view class which works nice and it takes the strings from a class called Str and display them in a listview, the problem is the listview style isn’t nice, it’s black with the strings in white.

I want them to be alternative each row has a color.

I tried many tutorials but none was clear enough ..
How do I make Alternative Color for each row .. ex. row1 Blue, row 2 White, row 3 Blue, row 4 White, etc..

How to&Answers:

Here is how to do that.

My example code is given here in brief:

Override the getView method in your adapter:

public View getView(int position, View convertView, ViewGroup parent) {  
View view = super.getView(position, convertView, parent);  
if (position % 2 == 1) {
} else {

return view;  

Override ArrayAdapter and override getView method there.

So if your adapter is something like this:

public class MyAdapter extends ArrayAdapter

Your ListActivity will change like this:

 ArrayAdapter<String> adapter = new MyAdapter<String>(this,
                android.R.layout.simple_list_item_1, Str.S);

Here’s an example about overriding ArrayAdapter.


if (position % 2 == 0) {


} else {




The Background color for a custom listview row can be set with


method in custom listview adapter in

getView(int position, View convertView, ViewGroup parent)

I have tried many things like row.setBackgroundColor(0xFF00DD) but couldn’t get it done,

here list_bg_2 is a color set res/values/color.xml

<?xml version="1.0" encoding="utf-8"?>
    <color name="list_bg_1">#ffffff</color>
    <color name="list_bg_2">#fef2e8</color>