dans mon post précédent j’ai mis en place un formulaire avec lequel j’enregistre une recette.
Etape 7 je vais afficher la liste des recettes de la base de données. dans le repertoire res/layout je crée un fichier liste_recette.xml, c’est ce fichier qui sera appelé pour afficher ma liste de recette.
1 2 3 4 5 6 7 8 9 10 11 | <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/container" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ListView android:id="@android:id/list" android:persistentDrawingCache="animation|scrolling" android:layout_width="fill_parent" android:layout_height="fill_parent" /> </FrameLayout> |
dans notre classe BDAcess.java je vais rajouter une méthode qui renvoi dans un tableau la liste des recettes de ma base.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | public ArrayList<String> renvoi_liste_recette(){
String[] aTableCollonne=new String[] {"nom_larecette"};
Cursor objCursor = mDb.query(RECETTE_TABLE,aTableCollonne,null,null,null,null,null,null);//requete de récupération de la liste
int iPostNomchaine = objCursor.getColumnIndex("nom_larecette");
ArrayList<String> aTableRetour = new ArrayList<String>();
objCursor.moveToFirst();// position sur la première ligne
if (objCursor != null) {
if (objCursor.isFirst()) {
int i = 0;
do {
i++;
String resultsring = objCursor.getString(iPostNomchaine);//récupération du nom de la recette
aTableRetour.add(resultsring);//enregistrement du nom de la recette dans tableau
objCursor.moveToNext();//positionnement sur le suivant
}while(objCursor.isLast());
}
}
return aTableRetour;
} |
dans mon menu je vais affecté l’action sur mon menu Recette , dans ma section de gestion du menu je rajoute le code suivant
1 2 3 4 5 6 7 8 9 10 11 12 13 | case R.id.item03: objBd.open();// ouverture de la base de donnée this.setContentView(R.layout.liste_recette);// ouverture de ma page xml mPhotosList = (ListView) findViewById(android.R.id.list); final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,objBd.renvoi_liste_recette()); mPhotosList.setAdapter(adapter); mPhotosList.setOnItemClickListener(this) objBd.close();//fermeture de ma base return true; |
vous pouvez télécharger le code source de ces étapes ici
à suivre rechercher une recette avec un champ d’autocomplémentation
Il est temps de mettre à profit les tutoriels d’Android France:
Passez à la vitesse supérieure et investissez quelques dizaines d’euros pour acquérir les connaissances qui vous feront gagner de l’argent avec vos applications rendez-vous sur notre boutique Android-france pour ces formations en vidéo


















29 mai 2009 à 16 h 23 min
Coucou,
Juste une remarque: il est mieux de tester la nullité de objCursor avant de faire un objCursor.moveToFirst().
Sinon tes articles sont nickels. Bravo.
02 septembre 2009 à 8 h 46 min
Super bien ce post. Et de mieux en mieux avec à l’étape 7 qui permet de voir l’ensemble du projet.
je crois bien qu’on écrit co-N-diment enfin à vérifier.
Petit point d’amélioration par soucis de perfectionnement
A l’étape 8.
02 septembre 2009 à 8 h 48 min
‘Par souci de’ … désolé
29 septembre 2009 à 9 h 55 min
Salut!
Bravo pour tes tutos!
Juste une remarque: quand j’essaie ton projet de l’étape 7, il me dit dans R.java à la ligne:
“public final class R {”
cette remarque:
“The type R is already defined”
Bonen continuation.
03 janvier 2010 à 0 h 38 min
Bonsoir à tous (et bonne année).
Bon tous d’abord encore merci pour ce tuto.
Ensuite je n’arrive pas à récupérer la source apparement le fichier rar n’est plus dispo.
dernièrement j’ai un soucis car le script ne boucle pas pour ajouter les données de la liste.
Je pensait à une erreur de récup des données mais bon cela fonctionne.
J’ai donc modifié le script afin que cela fonctionne (avec un for(j=0;j<20;j++)…) mais bon j'airmerais comprendre pourquoi cela marche sur le premier passage et ensuite cela stop la boucle.
Merci par avance pour votre aide (et vos conseils).
Bon dimanche à tous.
10 septembre 2010 à 14 h 14 min
Ce code ne semble pas ajouter le dernier élément du Cursor dans la liste aTableRetour.
Il convient d’appeler la méthode moveToLast() sur le Cursor après la boucle d’ajout et d’ajouter le dernier élément à la liste.
10 décembre 2011 à 0 h 40 min
on doit changer la condition sur la boucle do while elle devienne while(objCursor.isLast()==false)pour qu’on puisse afficher toute la liste