Você não está consultando o _id do banco de dados (somente a coluna KEY_NAME2), portanto não pode obtê-lo do adaptador.
Está linha:
Cursor cur = (Cursor) parent.getItemAtPosition(position);
está totalmente errado. Você está tentando converter uma String (que é retornada por
ArrayAdapter<String>
para um cursor, que nunca pode funcionar. O que você precisa fazer é usar um
CursorAdapter
(ou SimpleCursorAdapter
) para seu ListView. O cursor deve consultar pelo menos _id e KEY_NAME2. Com este adaptador o
getItem(int position)
retornará um cursor definido para a posição solicitada. Então tudo que você precisa fazer é cursor.getInt(cursor.getColumnIndex("_id"))
e você está lá.