• 09avr

    Développez une application pour android etape 7 (Affichage de la liste des recettes)



    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


    Vidéo de formation pour Android

    Guy

    Co-fondateur du site Android france, senior lead developper, passionné de bière et de cigare cubain

    Twitter Google+ 

20 commentaires

  1. 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.

  2. 2 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.
    Petit point d’amélioration par soucis de perfectionnement ;) je crois bien qu’on écrit co-N-diment enfin à vérifier.
    A l’étape 8.

  3. 2 septembre 2009 à 8 h 48 min

    ‘Par souci de’ … désolé ;)

  4. 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.

  5. 3 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.

  6. 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.

  7. 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

Laissez un commentaire

     Vous devez être identifié pour publier un commentaire.
     Connexion - Inscription