Dans cette étape 14 je vais récupérer les différents informations saisies dans ma boite de dialogue pour remplir ma textarea ingredient.
Je reviens vite fais sur l’achitecture de ma base de donnée, nous avons:
la table recette_larecette dans laquelle j’enregistre la préparation,
la table recette_condiment où j’indexe les ingredients
et la table recette_contenu qui fait le lien entre la recette, les ingredients et l’unité de mesure.
Ce systeme nous servira plus tard pour le calcule de la liste de course.
Tous ça pour dire que le format des ingredients dans le textarea sera de format quantité,unité de mesure , ingredient \n(Retour à la ligne);
D’abord ma classe Myclassdialog
public class Myclassdialog extends Dialog implements OnClickListener{
private Button okButton;
private Button cancelButton;
private Context lecontext;
private ReadyListener readyListener;
public interface ReadyListener {
public void ready(String text);
}
public Myclassdialog(Context context, ReadyListener readyListener) {
super(context);
lecontext = context;
this.readyListener = readyListener;
}
/**
* @see android.app.Dialog#onCreate(android.os.Bundle)
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d("TestApp", "Dialog created");
setContentView(R.layout.choixingredient);
okButton = (Button) findViewById(R.id.btvalingre);
cancelButton = (Button) findViewById(R.id.btquitter);
okButton.setOnClickListener(this);
cancelButton.setOnClickListener(this);
}
public void onClick(View view) {
switch (view.getId()) {
case R.id.btquitter:
dismiss();
break;
case R.id.btvalingre:
try{
TextView textmesure = (TextView) findViewById(R.id.valunite);
TextView textquantite = (TextView) findViewById(R.id.valquante);
TextView textingredient = (TextView) findViewById(R.id.valingredient);
String sRetour =textquantite.getText()+","+textmesure.getText()+","+textingredient.getText();
//appelle de la methode readyListener.ready et on passe en valeur le formatage
readyListener.ready(sRetour);
//String u="kk";
}catch(Exception e){
TextView textbastmp2 = (TextView) findViewById(R.id.ingredient);
textbastmp2.setText(e.toString());
}
break;
}
}
}
On rajoute un attribut readyListener, je modifie également le constructeur et sur le clique du bouton valider on appelle la méthode readyListener.ready
dans ma classe principale je modifie l’ouverture de notre boite de dialogue
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();
}
});
on rajoute ensuite toujours dans ma classe principale la création de la classe OnReadyListener() et de la méthode ready qui vas s’occuper de remplir ma zone de texte au format définie plus haut
private class OnReadyListener implements Myclassdialog.ReadyListener {
@Override
public void ready(String pass) {
String sNewtext;
TextView textbastmp2 = (TextView) findViewById(R.id.entry2);
sNewtext = textbastmp2.getText()+"\n"+pass;
textbastmp2.setText(sNewtext);
}
}
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