You need two item view types: one for the selected item and one for all the unselected ones. The adapter will automatically take care of only passing the correct type into your getView
method.
At the moment, your adapter knows of only one type of view, so it will just pass any recycled view it has available into your getView
method - some of which may still have the green highlight.
You need to implement getItemViewType and getViewTypeCount in your adapter and it will work.
Edit
I'm bored right now so here's what it should be like: :D
protected static final int TYPE_NORMAL = 0;
protected static final int TYPE_SELECTED = 1;
public int getItemViewType(int position) {
return isSelected[position] ? TYPE_SELECTED : TYPE_NORMAL;
}
public int getViewTypeCount() {
return 2;
}