Changing background color of ListView items on Android
Solution 1:
You have to create a different state drawable for each color you want to use.
For example: list_selector_read.xml
and list_selector_unread.xml
.
All you need to do is set everything to transparent except the android:state_window_focused="false"
item.
Then when you are drawing your list you call setBackgroundResource(R.drawable.list_selector_unread/read)
for each row.
You don't set a listSelector on the ListView at all. That will maintain the default selector for your particular flavor of Android.
Solution 2:
This is a modification based on the above code, a simplest code:
private static int save = -1;
public void onListItemClick(ListView parent, View v, int position, long id) {
parent.getChildAt(position).setBackgroundColor(Color.BLUE);
if (save != -1 && save != position){
parent.getChildAt(save).setBackgroundColor(Color.BLACK);
}
save = position;
}
I hope you find it useful
greetings!
Solution 3:
Ok, I got it to work like this:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="false" android:drawable="@color/BackgroundColor" />
<item android:drawable="@color/transparent" />
</selector>
YMMV!