私はAndroid開発にまったく慣れていません...iPhoneと.Netのバックグラウンドから来ています。私はこれと非常によく似た質問を見てきましたが、SimpleCursorAdapterを扱った質問はありませんでした。
カーソルを使用してSQLiteクエリのデータをListViewにバインドする基本的なListActivityがあります。
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から実際のアイテムを取得する方法が見つからない場合、渡されたIDのポイントは何ですか?また、getItemAtPosition()がカーソルを返す理由がわかりません...カーソルはリスト全体にバインドされています。1行だけではありません。最後に、これが正しければ、カーソルを取得する2つの方法に違いはありますか?ありがとう。