Ваш оператор else не сбрасывает цвет фона на исходный.Метод getView может перерабатывать представление, которое ранее было в вашем списке, но больше не отображается.Если фон был изменен, то он все равно будет тем цветом фона, который был изначально создан, что может зависеть от вашего состояния.
Итак, чтобы «сбросить» это, добавьте следующее в вашем else:
if(position==selected_position){
holder.name.setText(elements.get(position).get("name"));
convertView.setBackgroundResource(R.drawable.highlight_this);
holder.rated.setBackgroundResource(R.drawable.star_image);
}else{
holder.name.setText(elements.get(position).get("name"));
//Add this
convertView.setBackgroundResource(R.drawable.not_highlighted);
}