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