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

















