androniennn Posté(e) 9 mars 2011 Share Posté(e) 9 mars 2011 Bonsoir, Je voudrais créer une application qui permet de calculer et stocker la consommation moyenne d'une voiture! L'utilisateur insère à chaque fois deux valeurs et le résultat du calcul(consommation moyenne) doit être sauvegardé(préalablement dans un tableau) pour avoir une liste de la consommation avec l'affichage de la date. Ma question: Comment peut-on sauvegarder des valeurs dans un tableau ? Merci d'avance :) . Lien vers le commentaire Partager sur d’autres sites More sharing options...
androniennn Posté(e) 10 mars 2011 Auteur Share Posté(e) 10 mars 2011 Any help PLEAAAASE ? Comment peut-on stocker des valeurs dans Android ? Donnez moi juste un mot d'une fonction, méthode... et je ferais une recherche :emo_im_foot_in_mouth: Lien vers le commentaire Partager sur d’autres sites More sharing options...
chpil Posté(e) 11 mars 2011 Share Posté(e) 11 mars 2011 Il existe plusieurs possibilités de sauvegarder des données avec Android: fichier, 'Preferences', base de données, ... Dans ton cas, si tes données sont organisées en lignes / colonnes, une table en base de données me parait appropriée Tu peux commencer par regarder ici dans la doc developpeur Lien vers le commentaire Partager sur d’autres sites More sharing options...
androniennn Posté(e) 11 mars 2011 Auteur Share Posté(e) 11 mars 2011 Il existe plusieurs possibilités de sauvegarder des données avec Android: fichier, 'Preferences', base de données, ... Dans ton cas, si tes données sont organisées en lignes / colonnes, une table en base de données me parait appropriée Tu peux commencer par regarder ici dans la doc developpeur En principe j'ai juste besoin de 2 colonnes Consommation moyenne / Date, donc pas besoin d'un tableau à 2 dimensions! Je peux donc utiliser les preferences? comment? je crois que les preferences est pour les champs texte, cases à cocher.... non? Lien vers le commentaire Partager sur d’autres sites More sharing options...
chpil Posté(e) 11 mars 2011 Share Posté(e) 11 mars 2011 Les Preferences servent à sauvegarder des données propres à une application. Ce peut être des données saisies par l'utilsateur, via un menu des Preferences (champ texte, case à cocher, ...), ou bien des données manipulées directement par l'application (boolean, chaine, entier, ...). Ce mécanisme des Preferences est décrit dans le lien que je t'avais donné, section 'Shared Preferences' Lien vers le commentaire Partager sur d’autres sites More sharing options...
androniennn Posté(e) 11 mars 2011 Auteur Share Posté(e) 11 mars 2011 Merci chpil pour votre réponse, moi je cherche quelques instructions qui'ils me font ça (exemple): a= b+c; (b et c données) je veux à chaque valeur de b et c sauvegarder le résultat de la somme a . On peut faire ça avec Shared Preferences ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
chpil Posté(e) 11 mars 2011 Share Posté(e) 11 mars 2011 Le principe des SharedPreferences, c'est d'associer une valeur à une clef. Tu peux sauvegarder autant de valeurs que tu le souhaites, chacune avec un nom différent. Elles peuvent être de type string, int, boolean, ... Pour sauvegarder une valeur SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); SharedPreferences.Editor editor = prefs.edit(); editor.put("maPreference", "valeur_a_sauvegarder"); // pour une chaine de caractère; on peut aussi sauvegarder un entier, un booléen, etc... editor.apply(); Pour récupérer la valeur sauvegardée SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); String maPreference = prefs.getString("maPreference", null); // Ou getLong / getInt / getFloat / getBoolean pour récupérer une donnée d'un autre format Lien vers le commentaire Partager sur d’autres sites More sharing options...
androniennn Posté(e) 11 mars 2011 Auteur Share Posté(e) 11 mars 2011 Le problème est qu'en principe je ferais une seule formule qui calcule la consommation moyenne d'une voiture, donc un seul nom, donc une seule variable! ConsoMoy= (volume mis à la pompe / kilométrage depuis le dernier plein) x 100. Par la suite que je crois le principe des shared preferences et cette application sont quasiment deux choses contradictoires :\ ! Non ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
androniennn Posté(e) 11 mars 2011 Auteur Share Posté(e) 11 mars 2011 Je cherche et je trouve que les array(tableaux) me permettent de stocker des valeurs du même key. Mais les arrays sont-ils liés directement à une base de données et SQL et tout ? :emo_im_lips_are_sealed: Lien vers le commentaire Partager sur d’autres sites More sharing options...
chpil Posté(e) 12 mars 2011 Share Posté(e) 12 mars 2011 Je ne vois pas ce qui t'empêche d'utiliser les SharedPreferences. Ou bien, je ne comprends pas ton besoin... Qu'est-ce que tu veux sauvegarder ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
androniennn Posté(e) 12 mars 2011 Auteur Share Posté(e) 12 mars 2011 Vous avez dis ça: Le principe des SharedPreferences, c'est d'associer une valeur à une clef. Tu peux sauvegarder autant de valeurs que tu le souhaites, chacune avec un nom différent. Elles peuvent être de type string, int, boolean, ... Je veux sauvegarder un ensemble de valeurs pour une seule variable (ConsoMoy= (volume mis à la pompe / kilométrage depuis le dernier plein) x 100) La variable que je dois sauvegarder(ConsoMoy) va contenir plusieurs valeurs selon le volume et le kilométrage :\ SharedPreferences "fait l'affaire" ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
chpil Posté(e) 13 mars 2011 Share Posté(e) 13 mars 2011 Tu veux donc sauvegarder plusieurs enregistrements de ConsoMoyenne, chaque enregistrement contenant un volume, un kilométrage, etc.. C'est ça ? Si oui, on peut donc dire que tes données sont organisées en ligne/colonne. Une table en base de données est la plus appropriée dans ce cas (c'est d'ailleurs la première réponse que je t'ai faite dans ce post...) Lien vers le commentaire Partager sur d’autres sites More sharing options...
androniennn Posté(e) 13 mars 2011 Auteur Share Posté(e) 13 mars 2011 C'est presque ça ce que je veux faire, mais je veux juste sauvegarder (afficher après) la date et la ConsoMoy(pas les valeurs du kilométrage et du volume). Donc, un tableau à deux dimensions est la solution! chpil, un exemple(lien) SVP :P ? Peut être un problème: afin d'utiliser la structure tableau il faut connaitre auparavant la taille de ce dernier, par contre, la taille est inconnue :emo_im_undecided: Je mets une valeur élevée [1000][1000] ? :rolleyes: Lien vers le commentaire Partager sur d’autres sites More sharing options...
androniennn Posté(e) 14 mars 2011 Auteur Share Posté(e) 14 mars 2011 Donc une idée ? :emo_im_foot_in_mouth: Lien vers le commentaire Partager sur d’autres sites More sharing options...
androniennn Posté(e) 14 mars 2011 Auteur Share Posté(e) 14 mars 2011 Ce que je suis entrain de faire, est-il juste? Initialisation du tableau: ArrayList<Float> val = new ArrayList<Float>(); Remplissage du tableau par les valeurs de x: float x=((q1 / q2)* 100); cons.setText(Float.toString(x)); for(int i=0; i< val.size(); i++){ val.add(x); } Affichage(Toast): for(int i=0; i< val.size(); i++){ float y=val.get(i); String z = Float.toString(y); Toast.makeText(carburant.this, z, Toast.LENGTH_LONG).show(); } Lien vers le commentaire Partager sur d’autres sites More sharing options...
chpil Posté(e) 15 mars 2011 Share Posté(e) 15 mars 2011 Oui, c'est juste... si ce que tu veux faire, c'est gérer en mémoire une liste de valeurs Float. Mais, ce n'est pas une liste persistante, et les données n'y seront pas stockées de manière durable Lien vers le commentaire Partager sur d’autres sites More sharing options...
androniennn Posté(e) 15 mars 2011 Auteur Share Posté(e) 15 mars 2011 Oui, c'est juste... si ce que tu veux faire, c'est gérer en mémoire une liste de valeurs Float. Mais, ce n'est pas une liste persistante, et les données n'y seront pas stockées de manière durable Ahah, c'est ce que je voulais savoir ! Donc, je m'oriente vers quoi ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
chpil Posté(e) 15 mars 2011 Share Posté(e) 15 mars 2011 Pour la (au moins) 3ème fois, je vais te conseiller de regarder du côté des solutions de stockage persistant Android, et plus particulièrement la solution base de données... Lien vers le commentaire Partager sur d’autres sites More sharing options...
androniennn Posté(e) 15 mars 2011 Auteur Share Posté(e) 15 mars 2011 Pour la (au moins) 3ème fois, je vais te conseiller de regarder du côté des solutions de stockage persistant Android, et plus particulièrement la solution base de données... Chpil, j'ai trouvé une piste: un projet sur SourceForge. Juste une question, le DEV a utilisé les SharedPreferences, c'est ça ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
androniennn Posté(e) 16 mars 2011 Auteur Share Posté(e) 16 mars 2011 Voilà, j'ai passé tout la journée(c'est bon en principe il n'a pas utilisé ni un tableau ni une BDD, mais un fichier) à comprendre le code, et je l'ai "ajusté" à mon appli, j'ai toutefois un problème :\: un FC lorsque je tape sur le bouton "Calculer", je veux réaliser une sauvegarde de la valeur au moment où je tape sur le bouton, ça marché une période mais après un FC :( : Code: button.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { String value1 = vol.getText().toString(); String value2 = kil.getText().toString(); if (value1 != null && value1.trim().length() > 0 && value2 != null && value2.trim().length() > 0) { float q1=Float.parseFloat(vol.getText().toString()); float q2=Float.parseFloat(kil.getText().toString()); float x=((q1 / q2)* 100); String y= Float.toString(x); cons.setText(y); SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy"); data = format.format(new Date()); data = data + " : " + y + " L/100km\n" + value1 + " litres "+ value2 + " km\n"; SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context); if (data != "" ) { String fileName = getResources().getString(R.string.fileName); String fileDir = ""+ preferences.getString("login", "") + "."+ preferences.getString("marque", "") + "."; myIO.WriteSettings(context, fileDir + fileName, data); data = ""; } } else { Toast.makeText(carburant.this, "Veuillez vérifier les deux champs", Toast.LENGTH_LONG).show(); } } }); Donc qu'est ce qui ne vas pas avec ce code ? Merci à vous :). Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.