Я новичок в разработке Android... исходя из iPhone и фона .Net. Я видел очень похожие вопросы к этому, но никто из них не рассматривал SimpleCursorAdapter.
У меня есть базовый ListActivity, который использует Cursor для привязки данных из 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, когда я не могу найти способ получить фактический элемент из этого идентификатора? Кроме того, я не понимаю, почему getItemAtPosition() вернет курсор... курсор привязан ко всему списку; не только одна строка. Наконец, если это правильно, есть ли разница между двумя способами, показанными для получения курсора? Спасибо.