Как добавить / удалить элементы в ListView в виртуальном режиме? - PullRequest
8 голосов
/ 26 марта 2010

Если я использую ListView в виртуальном режиме, то, насколько я понимаю, представление списка отслеживает только небольшое количество элементов в списке. Когда пользователь прокручивает его, он динамически извлекает элементы, которые ему нужно показать, из виртуального списка.

Но что, если элемент добавлен или удален из основного списка? Если элемент добавляется / удаляется за пределами диапазона индексов, отображаемых представлением списка, то я предполагаю, что представление списка будет отображать добавленные / отсутствующие элементы, когда пользователь прокручивает этот индекс. Это правильно? Но что, если элемент добавляется / удаляется из диапазона индексов, которые пользователь просматривает в данный момент? Как запустить представление списка, чтобы обновить элементы, которые он просматривает в данный момент, чтобы показать новые / отсутствующие элементы?

К вашему сведению: я использую ObjectListView , если это имеет какое-либо значение.

1 Ответ

8 голосов
/ 27 марта 2010

Виртуальный список ничего не знает о вашем списке предметов. Он не отслеживает их, даже небольшой набор. Это только когда-либо спрашивает "что ты хочешь показать в n-м ряду?"

Если ваш основной список изменяется, все, что вам нужно сделать, это перерисовать список. Invalidate() сделает это за вас. Затем список снова спросит вас, что он должен показывать в каждой строке, видимой в элементе управления.

Если вы используете ObjectListView, рассматривали ли вы возможность использования FastObjectListView, который дает вам преимущества скорости виртуального списка и простоту использования обычного ObjectListView?

...