Obtenha o item selecionado do ListView associado ao SimpleCursorAdapter

Sou novato no desenvolvimento do Android ... proveniente de iPhone e .Net. Já vi perguntas muito semelhantes a essa, mas nenhuma delas lidou com o SimpleCursorAdapte

Eu tenho um ListActivity básico que usa um Cursor para vincular dados de uma consulta SQLite ao meu ListView:

ListAdapter adapter = new SimpleCursorAdapter(
        this, 
        android.R.layout.simple_list_item_1,  
        c,        
        new String[] {"name"},   
        new int[] {android.R.id.text1}); 

setListAdapter(adapter);

Então, quando um item é clicado:

public void onListItemClick(ListView l, View v, int position, long id) {

    super.onListItemClick(l, v, position,  id);

    //Difference between this:
    Cursor c = (cursor)l.getItemAtPosition(position);
    //and this??
    Cursor c = (Cursor)l.getAdapter().getItem(position);

    int categoryId = c.getInt(0);
}

Esta é a maneira correta de obter o ID do elemento que foi selecionado? Parece estranho, porque eu acho que não poderia usar meu cursor após o fechamento do banco de dados (que é após a ligação). Qual é o sentido do ID passado quando parece que não consigo encontrar uma maneira de obter o item real desse ID? Além disso, não entendo por que o getItemAtPosition () retornaria um cursor ... o cursor está vinculado à lista inteira; não apenas uma linha. Finalmente, se isso estiver correto, existe uma diferença entre as duas maneiras mostradas de obter o cursor? Obrigado

questionAnswers(2)

yourAnswerToTheQuestion