Nel mio lavoro con software gestionali, mi sono spesso trovato a gestire elenchi molto lunghi: articoli di magazzino, movimenti, report. Le list view sono strumenti potenti, ma il modo in cui carichiamo i dati può fare la differenza tra un’interfaccia fluida e una che rallenta tutto.
Statico vs Virtuale
Il caricamento statico è semplice: tutti i dati vengono inseriti nella lista all’avvio. Ma con migliaia o milioni di righe, questo approccio diventa lento e pesante.
Nei miei software gestionali, una lista con 12.000 articoli impiegava 45 secondi e 5 GB di RAM.
Con il caricamento virtuale, gli stessi dati si caricano in 0,5 secondi e consumano solo 200 MB di RAM.

Come funziona una lista virtuale
In una list view virtuale, i dati non vengono caricati tutti subito. Solo quelli visibili vengono richiesti e mostrati, riga per riga, durante lo scrolling.
Il controllo scatena un evento (LVN_GETDISPINFO) e il software recupera i dati dal database in tempo reale.
Per gestire l’indice, uso un array ATL con gli identificativi, così ogni riga sa cosa deve mostrare.
Vantaggi
- Prestazioni nettamente superiori
- Minore consumo di RAM
- Ottimo per dati remoti o archivi molto grandi
- Esperienza utente più fluida
Esempi d’uso
- Liste di articoli in magazzino
- Movimenti contabili
- Caselle combinate (combo box) con migliaia di voci
Se ti interessa approfondire gli aspetti tecnici, eventi, array, threading, ottimizzazioni, scrivimi nei commenti, sarò lieto di mostrarti il codice utilizzato.

