Изменение TextView применяется к нескольким TextViews с использованием ListView и ArrayAdapter.

Я начал работать над небольшим проектом не так давно, главная цель - найти способ отслеживать свои действия в течение 100 недель.

Я все еще начинающий разработчик Android и столкнулся с проблемой, которую не смог объяснить.

В основном я заполнил ListView с помощью ArrayAdapter списком, содержащим 100 строк (Week1, Week2, Week3 ... Week100)

Настройка onclicklistener на каждом из TextView, чтобы, когда пользователь щелкает текстовое представление, цвет фона изменялся на красный.

Тем не мение; всякий раз, когда я щелкаю одно текстовое представление - больше, чем одно текстовое представление окрашивается.

Заметки:

Я использую ScrollView для прокрутки всего списка. (После заполнения 100-недельный список заполняет весь экран, представление прокрутки используется для доступа ко всему списку.)

Я также сохранил ссылку на нарисованное в данный момент текстовое представление, чтобы быть уверенным, что при щелчке пользователем другого текстового представления предыдущее потеряет красный фон.

MainActivity инициализация:

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
}

Заполнение 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);
}

Код для инициализации onClickListener и сохранения выбранной ссылки на неделю:

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;
        }
    });
}

Ответы на вопрос(1)

Ваш ответ на вопрос