• 12juil

    Développez une application pour android étape 18 (Réorganisation de l’application)



    Dans cette étape 18 je vais réorganiser complétement l’application en plusieurs classes pour avoir une application structurée , et également utiliser les appels aux activity du tuto <<Passer des variables entre Activity sous android>>. On aura donc une classe par action du menu, et chaque nouvelle action sera une classe. Ce qui nous donne donc:

    Page principale =>Planningrecette.java (plat du jour)
    Enregistrer une recette=>EnregRecette.java
    Génération planning => GenerationPlanning.java
    Liste des courses=>ListeCourses.java
    Voir le planning=>VoirPlanning.java
    Rechercher une recette=>RechercherRecette.java
    Setting et configuration=>Setting.java
    Affiche recette=>AfficheRecette.java

    Ma classe Planningrecette.java, la classe principale est allégée considérablement elle donne donc

    ?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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    
       public class Planningrecette extends Activity {
     
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
           //ma fenetre d'entre sur l'application a voir plutard a quoi ça vas ressemblé
           this.setContentView(R.layout.entrer);
        }
     
    /** Called when the activity is first created. */
        @Override
     
       // création de mon nouveau menu
        public boolean onCreateOptionsMenu(Menu menu) {
            MenuInflater inflater = getMenuInflater();
            //inflater.inflate(R.menu.options_menu, menu);
            boolean result = super.onCreateOptionsMenu(menu);
            int i=0;
            //inflater.inflate(R.menu.menurepas, menu);
            SubMenu fileMenu = menu.addSubMenu(0,1,i,"Plat du jour");i++;
            SubMenu editMenu = menu.addSubMenu(0,2,i,"Enreg Recette");i++;
            SubMenu genplannMenu = menu.addSubMenu(0,6,i,"Gen planning");i++;
            SubMenu listeCouseMenu = menu.addSubMenu(0,3,i,"Liste courses");i++;
            SubMenu voirPlanningMenu = menu.addSubMenu(0,7,i,"Voir planning");i++;
            SubMenu rechecheMenu = menu.addSubMenu(0,4,i,"Rechercher");i++;
            SubMenu settingMenu = menu.addSubMenu(0,5,i,"setting");i++;
     
            return true;
        }
     
      //action sur les différents menu j'appel a chaque fois un nouveau Inten qui corespond à la classe
       public boolean onOptionsItemSelected(MenuItem item) {
            switch (item.getItemId()) {
          //***************ouverture enregistrement recette***************
            case 2:
         		Intent defineIntent = new Intent(this,EnregRecette.class);
         		this.startActivity(defineIntent);
         		return true;
            case 5:
         		Intent defineIntent5 = new Intent(this,Setting.class);
         		this.startActivity(defineIntent5);
         		return true;
            case 4:
         		Intent defineIntent4 = new Intent(this,RechercherRecette.class);
         		this.startActivity(defineIntent4);
         		return true;
            case 24:
            	Intent defineIntent24 = new Intent(this,GenerationPlanning.class);
     			this.startActivity(defineIntent24);
     			return true;
            }
      return false;
    }
     
    }

    Il faut également déclarer tous les nouveaux “intent” dans le fichier AndroidManifest.xml

    ?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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="org.com.planningrecette"
          android:versionCode="1"
          android:versionName="1.0">
          <uses-permission android:name="android.permission.INTERNET" />
        <application android:icon="@drawable/icon" android:label="@string/app_name">
           <activity android:name=".EnregRecette" android:label="@string/app_name">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                        <category android:name="android.intent.category.DEFAULT" />
                   </intent-filter>
            </activity>
     
            <activity android:name="Setting" android:label="@string/app_name">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                        <category android:name="android.intent.category.DEFAULT" />
                   </intent-filter>
            </activity>
     
             <activity android:name=".RechercherRecette" android:label="@string/app_name">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                        <category android:name="android.intent.category.DEFAULT" />
                   </intent-filter>
            </activity>
     
             <activity android:name=".GenerationPlanning" android:label="@string/app_name">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                        <category android:name="android.intent.category.DEFAULT" />
                   </intent-filter>
            </activity>
     
            <activity android:name=".Planningrecette"
                      android:label="@string/app_name">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>
        <uses-sdk android:minSdkVersion="3" />
    </manifest>

    La classe EnregRecette s’occupera elle d’enregistrer les recettes.

    public class EnregRecette extends Activity {
     
    	 private ListView mRecetteList;
    	 private  Context lecontext;
    	 private final ArrayList aTableauIngredient= new ArrayList();
    	 private final ArrayList aTableauIngredientaff= new ArrayList();
    	 private  BDAcces objBd=new BDAcces(this);;
    	/** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
             lecontext =this;
             this.setContentView(R.layout.main);
         	  Button btEnregRecette = (Button) findViewById(R.id.button);
     
         	   Button btEnregajcon = (Button) findViewById(R.id.ajcondiment);
     
         	 final TextView texthaut = (TextView) findViewById(R.id.entry);
         	 final TextView textbas = (TextView) findViewById(R.id.entry3);
     
         	 mRecetteList = (ListView) findViewById(android.R.id.list);
          	final ArrayAdapter adapter2 = new ArrayAdapter(getBaseContext(),
         	            android.R.layout.simple_list_item_1,aTableauIngredientaff);
          	mRecetteList.setAdapter(adapter2);
         	 //final TextView textmilieu = (TextView) findViewById(R.id.entry2);
     
          	//this.setContentView(R.layout.liste_recette);
     
         	btEnregRecette.setOnClickListener(new Button.OnClickListener() {
                 public void onClick(View v) {
                 	try{
                 	//textbas.setText(texthaut.getText());
                 	String sNomRecette = texthaut.getText().toString();
                 	String sContenuRecette = textbas.getText().toString();
                 	objBd.open();
                 	//texthaut.setText(objBd.renvoi_requete());
                 	long bresult = objBd.insertRecette(sNomRecette, sContenuRecette,aTableauIngredient);
                 	String resultsring = new Long(bresult).toString() ;
                 	textbas.setText(resultsring);
                 	//textmilieu.setText(sContenuRecette);
                 	objBd.close();
                 	}
                 	catch (Exception e) {
                 		textbas.setText("erreur "+e.getMessage());
    	               }
     
                 }
         	});
     
         	btEnregajcon.setOnClickListener(new Button.OnClickListener() {
                 public void onClick(View v) {
                 	//View v v.getContext()
                 	Myclassdialog dialog = new Myclassdialog(v.getContext(),
                 			new OnReadyListener());
                 	dialog.setTitle("Enregistrement ingredient");
                 	dialog.show();
     
                 }
         	});
     
        }
     
        private class OnReadyListener implements Myclassdialog.ReadyListener,
        AdapterView.OnItemClickListener, View.OnClickListener{
     
            public void ready(String sUnite,String sQuantite,String sIngredient) {
     
            	String[] sNewtext=new String[]{sUnite,sQuantite,sIngredient};
     
            	String sNewtextaff="";
            	//tableau temporaire des informations
            	aTableauIngredient.add(sNewtext);
            	//tableau temporaire de l'affichage
            	aTableauIngredientaff.add(sQuantite+" "+sUnite+" "+sIngredient);
     
            	/*int iTailletab = aTableauIngredient.size();
     
            	for(int i=0;i adapter2 = new ArrayAdapter(getBaseContext(),
           	            android.R.layout.simple_list_item_1,aTableauIngredientaff);
            	mRecetteList.setAdapter(adapter2);
                mRecetteList.setOnItemClickListener(this);
     
            	//TextView textbastmp2 = (TextView) findViewById(R.id.entry2);
     
            	//textbastmp2.setText(sNewtextaff);
     
            }
            // action sur le clik sur un item de ma listview
            public void onItemClick(AdapterView parent, View v, int position, long id) {
            	//***********suppression des informations dans mon tableau********
            	aTableauIngredientaff.remove(position);
            	aTableauIngredient.remove(position);
            	mRecetteList = (ListView) findViewById(android.R.id.list);
            	final ArrayAdapter adapter2 = new ArrayAdapter(getBaseContext(),
           	            android.R.layout.simple_list_item_1,aTableauIngredientaff);
            	mRecetteList.setAdapter(adapter2);
                mRecetteList.setOnItemClickListener(this);
     
            }
            public void onClick(View v) {
            	int u=0;
            }
     
       }
     
    }

    La classe Setting.java, gestion de la configuration de notre application.

    public class Setting extends Activity{
     
    	 private  BDAcces objBd=new BDAcces(this);
    	 private final ArrayList aTableauIngredient= new ArrayList();
     
    	/** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
           setContentView(R.layout.setting);
           //setContentView(R.layout.autocomplete);
     		final TextView contenuText = (TextView) findViewById(R.id.contenu);
     
     		//**************action mise à jour bdd**********************
     		Button btupdatebd = (Button) findViewById(R.id.btmisjour);
     		btupdatebd.setOnClickListener(new Button.OnClickListener() {
            	public void onClick(View v) {
            		objBd.open();
            		objBd.update_bdd();
            		objBd.close();
            		contenuText.setText("Mise à jour ok");
            	}
            	});
     
     		Button btimportrecette = (Button) findViewById(R.id.btrecet);
     		btimportrecette.setOnClickListener(new Button.OnClickListener() {
            	public void onClick(View v) {
            		try{
            		objBd.open();
            		ArrayList listeRecette = objBd.renvoi_liste_recette_xml();
            		 String myString = "";
            		 for(int i=0; i

    la classe RechercherRecette.java permettant de rechercher une recette dans la base de données.

    public class RechercherRecette extends Activity implements
    AdapterView.OnItemClickListener, View.OnClickListener{
     
    	private  BDAcces objBd=new BDAcces(this);
    	private  ArrayList[] aTableauResult;
     
    	/** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            //setContentView(R.layout.setting);
     		final TextView contenuText = (TextView) findViewById(R.id.contenu);
     		// on appelle le fichier xml autocomplete
     		setContentView(R.layout.autocomplete);
        	// ouverture de ma bas de donnée
        	objBd.open();
        	//récupération de la liste des recettes
        	this.aTableauResult= objBd.renvoi_liste_recette();
        	//création de la liste autocompletion
        	ArrayAdapter adapterII = new ArrayAdapter(this,
                    android.R.layout.simple_dropdown_item_1line,
                    this.aTableauResult[0]);
            AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.edit);
            textView.setAdapter(adapterII);
            // sur le click on appelle la page d'affichage du detail de la recette
            textView.setOnItemClickListener(this);
            objBd.close();
     
        }
    	public void onItemClick(AdapterView arg0, View arg1, int arg2, long arg3) {
    		// TODO Auto-generated method stub
     
    	}
    	public void onClick(View v) {
    		// TODO Auto-generated method stub
     
    	}
     
    }

    la classe GenerationPlanning.java permet de générer aléatoirement un planning en cours de développement et toutes les autres à venir.

    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


    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+ 

3 commentaires

Laissez un commentaire

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