Получить выбранный пункт из ListView, связанный с SimpleCursorAdapter

Я абсолютно новичок в разработке для Android ... идущий из фона iPhone и .Net. Я видел очень похожие вопросы, но ни один из них не касался SimpleCursorAdapter.

У меня есть базовый ListActivity, который использует курсор для привязки данных из SQLite-запроса к моему 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);

Затем при нажатии на элемент:

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);
}

Является ли это правильным способом получить идентификатор элемента, который был выбран? Это кажется странным, потому что я не думаю, что смогу использовать свой курсор после закрытия базы данных (то есть после того, как я привяжу). В чем смысл переданного id, когда я, кажется, не могу найти способ получить реальный элемент с этого id? Также я не понимаю, зачем функция getItemAtPosition() возвращала курсор... курсор привязан ко всему списку, а не только к одной строке. Наконец, если это верно, есть ли разница между двумя показанными способами получения курсора? Спасибо.

37
задан GendoIkari 27 May 2011 в 19:29
поделиться