Und die ID muss Teil der Daten werden, d. h.: Ein Datensatz hat ein Feld ID (oder ähnlich er Name) das einen Wert enthält, der innerhalb der Tabelle eindeutig ist.
Die ID kann sich nicht zufällig beim Einfügen in 'nen Listview ergeben. Sie wäre ja dann mehr oder weniger zufällig und ändert sich ggfls. bei 'ner Veränderung der Sortierung im ListView. Das kann nicht ernsthaft als Lösungsansatz dienen.
Die Eindeutigkeit eines Datensatzes (u. a. zwecks sicherer Identifizierung) muss Teil der Daten sein und nicht Teil der Anzeigekomponente.
SQLite bietet für solche Zwecke:
https://sqlite.org/autoinc.html