No está consultando el _id de la base de datos (solo la columna KEY_NAME2), por lo que no puede obtenerlo del adaptador.
Esta línea:
Cursor cur = (Cursor) parent.getItemAtPosition(position);
está completamente equivocado. Está intentando emitir una cadena (que es devuelta por ArrayAdapter<String>
a un cursor, que nunca puede funcionar.
Lo que tienes que hacer es usar un CursorAdapter
(o SimpleCursorAdapter
) para su ListView. El cursor debe consultar al menos _id y KEY_NAME2.
Con este adaptador el getItem(int position)
devolverá un cursor establecido en la posición solicitada. Entonces todo lo que necesitas hacer es cursor.getInt(cursor.getColumnIndex("_id"))
y estás ahí.