• Développez une application pour android étape 16 (indexer mes ingredients sur ma recette)

    Publié le 15 juin 2009 par Guy (GuyTouch)


    Ce tuto sera plus orienté développement. Le but dans cette étape est d’indexer chaque ingredient de la recette dans ma table recette_contenu.

    L’enregistrement de ma recette se fera donc en 2 étapes. Tous ces modifications se feront dans la méthode insertRecette de ma class BDAcces

    ?Download download.txt
    1
    2
    
    //je rajoute le paramètre ArrayList<String[]> aTableauIngredient qui contient la liste des ingredients
    public long insertRecette(String sNomRecette, String sContenuRecette,ArrayList<String[]> aTableauIngredient)

    I- enregistrement du nom de la recette et de la préparation dans la table recette_larecette en récupérant l’identifiant unique de ma recette

    ?Download download.txt
    1
    2
    3
    4
    5
    6
    
     //Enregistrement  du  nom et de la préparation de la recette dans ma base de donnée
     
        	  ContentValues initialValues = new ContentValues();
              initialValues.put("nom_larecette", sNomRecette);
              initialValues.put("recette_larecette", sContenuRecette);          
              long idrecette = mDb.insert(RECETTE_TABLE, null, initialValues);

    II- Je boucle sur la liste des ingredients contenus dans mon tableau aTableauIngredient.
    *si l’ingredient n’existe pas dans ma table recette_condiment je l’enregistre , et je récupére sont identifiant ensuite dans ma table recette_contenu j’enregistre l’identifiant de ma recette, celui de mon ingredient,l’unité de mesure et la quantité.

    ?Download download.txt
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    
     //récupration de la taille de mon tableau
              int itaille= aTableauIngredient.size();
              String[] acol= new String[]{"nom_condiment","id_condiment"};
     
              for(int j=0;j<itaille;j++){
                     // recherche de l'ingredient dans le tableau recette_condiment 
            	  String sselect =" nom_condiment='"+aTableauIngredient.get(j)[2]+"'";
            	  Cursor tmpcursor = mDb.query(INGREDIENT_TABLE, acol, sselect,null,"","","");
                 // si l'ingredient n'existe pas
            	if(tmpcursor.getCount()==0){
            		  ContentValues initialValuestmp = new ContentValues();
            		  initialValues.put("nom_condiment", aTableauIngredient.get(j)[2]);
            		  long idtmpcomd = mDb.insert(INGREDIENT_TABLE, null, initialValuestmp);        		  
            		  //*****************enregistrement lien condiment recette*************
            		  ContentValues initiallienstmp = new ContentValues();
            		  initiallienstmp.put("id_larecette", idrecette);
            		  initiallienstmp.put("unitemesure_contenu", aTableauIngredient.get(j)[1]);
            		  initiallienstmp.put("id_condiment", idtmpcomd);
            		  initiallienstmp.put("nombre_contenu", aTableauIngredient.get(j)[0]);
            		  mDb.insert(INGREDIENT_RECETTE_TABLE, null, initiallienstmp);
     
            	  }

    *Si lingredient existe déja dans ma base je récupére juste l’identifiant

    ?Download download.txt
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    else{
            		  int iPostNom = tmpcursor.getColumnIndex("id_condiment");
            		  tmpcursor.moveToFirst();
            		  String idtmpcomd=tmpcursor.getString(iPostNom);
            		//*****************enregistrement lien condiment recette*************
            		  ContentValues initiallienstmp = new ContentValues();
            		  initiallienstmp.put("id_larecette", idrecette);
            		  initiallienstmp.put("unitemesure_contenu", aTableauIngredient.get(j)[1]);
            		  initiallienstmp.put("id_condiment", idtmpcomd);
            		  initiallienstmp.put("nombre_contenu", aTableauIngredient.get(j)[0]);
            		  mDb.insert(INGREDIENT_RECETTE_TABLE, null, initiallienstmp);
            	  }

    Cette architecture de ma base de données me permettra plus tard de pourvoir faire différentes requêtes,
    par exemple la liste des courses sur une liste de recette en factorisant les ingrédients.

    Code source ici

    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+ 

  • 0 Commentaire pour ce billet

  • Laissez un commentaire

  • Les Brèves