Каков правильный способ изменения всех дочерних элементов (не только видимых) списка.
Одна вещь, чтобы понять о ListView
, заключается в том, что не все элементы списка генерируются (завышены/заполнены) в любой момент времени.
Предположим, например, ваш список Adapter
имеет в нем 1000 наименований, но ListView
может отображать только 10 одновременно. Было бы очень плохо потратить ресурсы (например, память), чтобы создать все 1000 элементов списка.
Вместо этого, только 10 видимые элементы создаются и каждый раз, когда вы перечисляете один с верхней или нижней части экрана, один, который исчез повторно циклическое путем передается как convertView
в метод Adapter's
getView
.
getView (int position, View convertView, ViewGroup parent)
Для того, чтобы делать то, что вы просите, вы должны продлить любой Adapter
типа вы хотите использовать и переопределить метод getView
. В этом методе проверьте, convertView
- null
или нет. Если это так, надуйте свой собственный экземпляр макета списка. Если он не равен нулю, повторите использование элементов интерфейса (TextView
, ImageView
и т. Д.).
Чтобы увидеть все ImageView
элементов, используйте глобальные Boolean
, такие как showImageView
, которые будут переключаться при нажатии кнопки. Затем используйте это в getView
, чтобы решить, следует ли устанавливать видимость ImageView
.
См Adapter.getView(...)
Отличное объяснение! теперь он работает. 10X :) –