Я пытаюсь создать ListView, где в каждой строке есть текст и флажок.Я знаю, что это решенная проблема, но я все равно пытался сделать это сам и очень близок к тому, чтобы заставить его работать.
Вот мое демонстрационное приложение на github .
Нажатие на элемент ListView в любом месте, кроме флажка, правильно регистрирует, что флажок установлен.Нажатие на поле не вызывает событие OnItemClick и, следовательно, тот факт, что флажок установлен, не зарегистрирован.
Я мог бы добавить прослушиватель для каждого флажка и поддерживать состояние внутри адаптера, что было бы неплохо, но мне нужен какой-то способ сообщить HomeActivity, когда в списке проверены приложения, а когда нет (для включения / отключения некоторых кнопок).Я рассматриваю возможность использования Callback для этого, но я никогда не делал этого на Java.
Чтобы решить некоторые общие вопросы в этой проблеме:
- Флажок имеет android: focusable иandroid: focusableInTouchMode оба установлены в false
- Я попробовал android: clickable = "false" на флажке, но затем метод OnItemClick для списка никогда не вызывался.
- Я поддерживаю состояние флажковв HashMap, чтобы их можно было правильно установить в адаптере при повторном использовании представлений.