Du frågar inte efter _id från databasen (endast kolumnen KEY_NAME2), så du kan inte hämta det från adaptern.
Denna rad:
Cursor cur = (Cursor) parent.getItemAtPosition(position);
är helt fel. Du försöker casta en sträng (som returneras av ArrayAdapter<String>
till en markör, som aldrig kan fungera.
Vad du måste göra är att använda en CursorAdapter
(eller SimpleCursorAdapter
) för din ListView. Markören bör fråga åtminstone efter _id och KEY_NAME2.
Med den här adaptern getItem(int position)
kommer att återställa en marköruppsättning till önskad position. Sedan är allt du behöver göra cursor.getInt(cursor.getColumnIndex("_id"))
och du är där.