Вие не заявявате _id от базата данни (само колоната KEY_NAME2), така че не можете да го получите от адаптера.
Този ред:
Cursor cur = (Cursor) parent.getItemAtPosition(position);
е напълно погрешно. Опитвате се да предавате низ (който се връща от ArrayAdapter<String>
към курсор, който никога не може да работи.
Това, което трябва да направите, е да използвате CursorAdapter
(или SimpleCursorAdapter
) за вашия ListView. Курсорът трябва да прави заявка поне за _id и KEY_NAME2.
С този адаптер getItem(int position)
ще върне курсора, настроен на исканата позиция. Тогава всичко, което трябва да направите, е cursor.getInt(cursor.getColumnIndex("_id"))
и вие сте там.