У меня есть список и соответствующий адаптер списка.
Представления, отображаемые в Listview, я написал сам, и это макет кадра с одной кнопкой и одной кнопкой изображения. Кнопка изображения представляет собой красный крест, который удаляет запись, а обычная кнопка выбирает запись.
Когда пользователь нажимает обычную кнопку, этот элемент выбирается, и я хочу показать это пользователю, установив зеленый фон этого элемента. Приложение запоминает, какой элемент выбрал пользователь, и при следующем отображении списка этот элемент должен быть выбран и выделен зеленым цветом.
Обратите внимание, что в моем списке всегда должен быть один и ТОЧНО один выбранный элемент.
В методе getView(.. в моем адаптере очень легко изменить цвет кнопки, когда пользователь нажимает ее. Но кнопка, которая была зеленой до того, как пользователь нажал ее, мне невозможно указать.
- Я попытался сохранить ссылку на ранее выбранную кнопку, но она никогда не перерисовывалась.
- Я попытался удалить и добавить элемент данных из списка, чтобы вызвать notifyDataSetChanged, но он никогда не перекрашивался
- Я попробовал setChoiceMode(ListView.CHOICE_MODE_SINGLE), но это ни к чему не привело, потому что я не знаю, как поймать выбор в моем методе getView и рисовать по-разному в зависимости от того, выбран он или нет.
Все руководства, которые я вижу, предлагают использовать notifyDataSetChanged. Однако базовые данные в этом случае НЕ изменяются, и это не является правильным (или возможным) решением.
Итак, я думаю, что моя проблема сводится к следующему: КАК я могу ссылаться на другое представление в моем списке??
(И да, я видел это сообщение: Выделить выбранный элемент в ListView на Android , Он описывает мою проблему и отвечает «а затем измените цвет фона предыдущего выбранного элемента на нормальный», но я все еще не могу обратиться к ПРЕДЫДУЩЕМУ выбранному элементу.
Спасибо!