-
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.javaMa classe Planningrecette.java, la classe principale est allégée considérablement elle donne donc
?Download download.txt1 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.txt1 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; ila 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
3 commentaires
Laissez un commentaire
Vous devez être identifié pour publier un commentaire.
Connexion - Inscription
S'inscrire









