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

    Publié le 09 avril 2009 par Guy (GuyTouch)


    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


    Guy

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

    Twitter Google+ 

  • 7 Commentaires pour ce billet

    1. 1 - bzion dit:

      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 - Vendetta dit:

      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. 3 - Vendetta dit:

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

    4. 4 - Profete162 dit:

      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. 5 - blubsy dit:

      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. 6 - Jarrek dit:

      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. 7 - rimos dit:

      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

  • Les Brèves