В моем макете есть кнопка и список. Как я могу изменить изображение выбранного элемента при нажатии кнопки. Допустим, я выбираю 5 элементов, и после того, как я нажимаю кнопку, изображения для этих 5 элементов будут изменены.
Поэтому я не понимаю, какую функцию мне следует использовать. Прямо сейчас я использовал button.setOnClickListener, но это кажется неправильным, потому что при нажатии кнопки будет изменено только изображение самого первого элемента. Стоит ли использовать listview.setItemOnClickListener? Или есть другой способ сделать это?
Большое спасибо!
3 ответа
Добавьте логическое значение к объекту данных в вашем адаптере. Скажем, у вас есть ArrayAdapter
Переопределите getView в адаптере (кстати, вам понадобится специальный адаптер. Я бы просто расширил ArrayAdapter). Когда вы визуализируете строку, если поле «selected» истинно, покажите «другое» изображение.
Когда вы нажимаете кнопку, вызываете notifyDataSetChanged на адаптере. Это заставит видимые строки обновляться (и вызывать getView для каждой).
Я думаю, это сработает.
Поскольку вы хотите, чтобы изображения изменялись только при нажатии кнопки, вам необходимо иметь какое-то глобальное логическое значение, чтобы getView не отображал изображение, пока кнопка не была нажата.
Сложность здесь в том, что вам приходится иметь дело со строками, которые могли быть прокручены вне поля зрения, которые не имеют активных представлений, но логически существуют. Было бы действительно сложно объяснить концепцию здесь. Я бы предложил несколько руководств по ListView, если вы не знакомы с переработкой представлений строк.
Вы можете использовать собственный базовый адаптер для listview и setonclicklistener в методе getView () .... см. Учебник здесь это надежда на помощь
Вы можете использовать прослушиватель нажатия кнопки, а также на itemClickListener, но для создания представления изображения в выбранном состоянии в списке необходимо вызвать метод setSelected родительского макета imageview.
Пожалуйста, оставьте комментарий, если вы меня не поняли.
Благодарность
Похожие вопросы
Связанные вопросы
Новые вопросы
android
Android — это мобильная операционная система Google, используемая для программирования или разработки цифровых устройств (смартфонов, планшетов, автомобилей, телевизоров, одежды, очков, IoT). Для тем, связанных с Android, используйте теги, специфичные для Android, такие как android-intent, android-activity, android-adapter и т. д. Для вопросов, отличных от разработки или программирования, но связанных с Android framework, используйте эту ссылку: https://android .stackexchange.com.