Vous n'interrogez pas le _id de la base de données (uniquement la colonne KEY_NAME2), vous ne pouvez donc pas l'obtenir de l'adaptateur.
Cette ligne :
Cursor cur = (Cursor) parent.getItemAtPosition(position);
est entièrement faux. Vous essayez de caster une chaîne (qui est renvoyée par ArrayAdapter<String>
à un curseur, qui ne peut jamais fonctionner.
Ce que vous devez faire, c'est utiliser un CursorAdapter
(ou SimpleCursorAdapter
) pour votre ListView. Le curseur doit interroger au moins _id et KEY_NAME2.
Avec cet adaptateur, le getItem(int position)
renverra un curseur réglé sur la position demandée. Ensuite, tout ce que vous avez à faire est de cursor.getInt(cursor.getColumnIndex("_id"))
et vous y êtes.