NOTE that Dim item As Object <===Important NOT String
Quanto sopra è
fondamentale: nessun metodo ipotizzato può funzionare
SE stiamo parlando di oggetti.
A te,
@XorAndOr, IndexOf di ListView funziona perché in realtà cerchi stringhe, NON oggetti.
Quando leggi il tuo oggetto:
Dim obj As Object = Ser.ConvertBytesToObject(Buffer)'Seriale
in realtà stai
creando un NUOVO oggetto contenente alcuni dati (quelli del buffer).
Se lo cercassi nella CLV non lo troveresti mai, anche se PENSI d'averlo aggiunto in precedenza, perché in realtà quello aggiunto è un oggetto
diverso rispetto a quello creato con Dim, benché contenga gli stessi dati.
Quando si fa il confronto:
If OggettoNellaCLV = obj (creato sopra, con Dim)
non vengono confrontati i contenuti dei due oggetti ma i loro "puntatori", riferimenti, che saranno sempre diversi.
Tutto quello si può fare,
quando si tratti di oggetti, è scorrere gli item della CLV e confrontare il contenuto
delle proprietà dei due oggetti.
Nel tuo caso si tratta di stringhe, quindi puoi effettuare la ricerca, sempre sequenzialmente, senza usare List o Map, ma devi dichiarare come String la variabile che conterrà quanto letto tramite la deserializzazione (e altrettanto, ovviamente, dovrai scrivere una stringa come valore degli item).
Il motivo del post è capire perchè con una semplice list esiste il metodo IndexOf
mentre con una CustomListView non è possibile fare la stessa cosa.
Il motivo è proprio quello sopra: gli item delle CLV hanno come valore associato degli oggetti, non delle stringhe.