Un cambio de TextView se aplica a múltiples TextViews usando ListView y ArrayAdapter

Empecé a trabajar en un proyecto pequeño no hace mucho tiempo, el objetivo principal es forjarme una manera de realizar un seguimiento de mis acciones durante el transcurso de 100 semanas.

Todavía soy un desarrollador novato de Android y he encontrado un problema que no podía explicar.

Básicamente he rellenado un ListView usando el ArrayAdapter con una lista que contiene 100 cadenas (Week1, Week2, Week3 ... Week100)

Configurar un onclicklistener en cada una de las TextViews para que cuando un usuario haga clic en una vista de texto, el color de fondo cambie a rojo.

Sin embargo; cada vez que hago clic en una sola vista de texto, se está coloreando más de una sola vista de texto.

Notas:

Estoy usando un ScrollView para desplazarme por toda la lista. (Una vez poblada, la lista de 100 semanas llena toda la pantalla, la vista de desplazamiento se usa para acceder a la lista completa).

También guardé una referencia a la vista de texto pintada actualmente para asegurarme de que cuando un usuario hace clic en una vista de texto diferente, la anterior pierda su fondo rojo.

MainActivity initialization:

public class MainActivity extends ActionBarActivity 
{
TextView selectedWeek; // Reference to the selected week.
@Override
protected void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    populateWeekList(); // Populating the ListView
    initWeekClick(); // Initializing click listener
}

Rellenar el ListView:

public void populateWeekList()
{
    String[] weeks = new String [100]; // 100 weeks
    for (int i=0; i<100;i++)
    {
        weeks[i] = "Week"+(i+1);
    }
    ArrayAdapter<String> weekAdapter = new ArrayAdapter<String>(
            this,
            R.layout.weeksview,
            weeks
    );

    // R.id.weekTypeList is just a normal TextView.
    ListView weekList=(ListView) findViewById(R.id.weekTypeList); 
    weekList.setAdapter(weekAdapter);
}

Código para inicializar onClickListener y guardar la referencia de la semana seleccionada:

public void initWeekClick()
{
    ListView weekList=(ListView) findViewById(R.id.weekTypeList);
    weekList.setOnItemClickListener(new AdapterView.OnItemClickListener() 
    {
        @Override
        public void onItemClick(AdapterView<?> parent, View viewClicked, int position, long id) 
        {
            if (selectedWeek != null) 
            {
                selectedWeek.setBackgroundColor(0);
            }
            TextView clicked = (TextView) viewClicked;

            // Change clicked TextView color to red.
            clicked.setBackgroundColor(getResources().getColor(android.R.color.holo_red_light));

            // Save the selected week reference
            selectedWeek = clicked;
        }
    });
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta