Если я использую ListView в виртуальном режиме, то, как я понимаю, просмотр списка отслеживает только небольшое количество элементов в списке. Когда пользователь прокручивает его, он динамически извлекает элементы, которые он должен отображать из виртуального списка.Как добавить/удалить элементы в ListView в виртуальном режиме?
Но что делать, если элемент добавлен или удален из главного списка? Если элемент добавляется/удаляется вне диапазона индексов, отображаемых в представлении списка, я бы предположил, что в представлении списка будут отображаться добавленные/отсутствующие элементы, когда пользователь прокручивается до этого индекса. Это верно? Но что, если элемент добавляется/удаляется из диапазона индексов, которые пользователь просматривает сейчас? Как вызвать просмотр списка для обновления элементов, которые он просматривает в настоящее время, для отображения новых/отсутствующих элементов?
FYI: Я использую ObjectListView, если это имеет значение.
Я загружаю отдельные миниатюры для каждого элемента в списке, поэтому мне нужно получить уведомление, когда пользователь просматривает каждый элемент, чтобы предварительно загрузить миниатюры. Я пытаюсь не загружать все миниатюры сразу, так как потенциально могу показать большое количество элементов. В настоящее время я вызываю Build() для обновления VirtualLIstView при изменении моей коллекции. Есть ли причина, по которой я хотел бы назвать Invalidate() над Build()? –
Виртуальный список - это точно правильный подход, чтобы делать то, что вы хотите - я использовал точно такую же стратегию. И BuildList() лучше всего - он вызывает Invalidate() как часть его обработки. Это работает? – Grammarian