Non stai interrogando _id dal database (solo la colonna KEY_NAME2), quindi non sei in grado di ottenerlo dall'adattatore.
Questa riga:
Cursor cur = (Cursor) parent.getItemAtPosition(position);
è del tutto sbagliato. Stai tentando di eseguire il cast di una stringa (che viene restituita da ArrayAdapter<String>
a un cursore, che non può mai funzionare.
Quello che devi fare è usare un CursorAdapter
(o SimpleCursorAdapter
) per ListView. Il cursore dovrebbe interrogare almeno _id e KEY_NAME2.
Con questo adattatore il getItem(int position)
restituirà un cursore impostato sulla posizione richiesta. Quindi tutto ciò che devi fare è cursor.getInt(cursor.getColumnIndex("_id"))
e ci sei.