Je suis tout nouveau dans le développement Android... je viens de l'iPhone et de .Net. J'ai vu des questions très similaires à celle-ci, mais aucune d'entre elles ne traitait du SimpleCursorAdapter.
J'ai une activité ListActivity de base qui utilise un curseur pour lier les données d'une requête SQLite à mon 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);
Ensuite, lorsqu'un élément est cliqué :
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);
}
Est-ce la bonne façon d'obtenir l'identifiant de l'élément qui a été sélectionné ? Cela semble étrange, car je ne pensais pas pouvoir utiliser mon curseur après la fermeture de la base de données (ce qui est le cas après la liaison). Quel est l'intérêt de passer l'identifiant, alors que je n'arrive pas à trouver un moyen d'obtenir l'élément réel à partir de cet identifiant ? Je ne comprends pas non plus pourquoi getItemAtPosition() renvoie un curseur... le curseur est lié à la liste entière, pas seulement à une ligne. Enfin, si cela est correct, y a-t-il une différence entre les deux façons d'obtenir le curseur ? Je vous remercie.