J'ai une application dans laquelle l'utilisateur entre dans les données dans EditText et appuie sur le bouton Enregistrer.
En appuyant sur "Enregistrer" I Enregistrer dans un fichier Les données utilisateur (en une colonne) et la date actuelle (dans l'autre colonne. ). P>
Puis, j'appuie sur un autre bouton et appuyez sur la graphique (à l'aide de l'axe de l'axe ADACHARTENDININE) (axe x). P>
Donc, Saisie de données pendant une journée, des résultats En économie par exemple: "1" (données utilisateur) -> 20/4/2013, "2" -> 20/4/2013, "3" -> 20/4/2013. P>
et Dans l'intrigue, j'ai 3 points dans l'axe Y (OK) et 3 points dans l'axe x (pas OK). P>
Je veux avoir un point dans l'axe x parce que les données sont entrées dans le même jour.
i enregistre les données: p> Comment puis-je enregistrer les données utilisateur pendant une journée? p> peut-être certains chèque ici: ou ici: mais je ne peux pas comprendre. p> Par exemple, je saisis des données "1", "2", "3" en date "20/4/2013" . P> C'est ce que j'obtiens maintenant à mon code:
mais j'ai besoin de graphique comme ci-dessous: les données saisies le même jour doivent être combinées :: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------- P> Date d = nouvelle date (); code>? Pour vérifier si c'est le même jour. P>
bw.write (mydata.get (i) + "," + dates_strings.get (i) + "\ n"); code> p>
p>
p>
mRenderer.setXLabels(0);
for (int i=0;i<mydata.size();i++){
mRenderer.addXTextLabel(i,dates_Strings.get(i));
Date lastDate=null;
String lastdate="";
try{
// the initial date
Date initialDate=formatter.parse(dates_Strings.get(mydata.size()-1));
Calendar c = Calendar.getInstance();
c.setTime(initialDate);
c.add(Calendar.DATE, 1); // increase date by one
lastDate =c.getTime();
}catch ...
}
mRenderer.setXAxisMax(lastDate.getTime());
mRenderer.addXTextLabel(i,dates_Strings.get(i));
}
4 Réponses :
OK.
Lorsque vous appelez nouvelle date (), vous déterminez également le temps de création (le format par défaut est le: 1er janvier 1970, 00h00:00 GMT). Parce que vos points sont créés à une heure différente mais la même date, vos points ne sont pas alignés. P>
Vous devez donc le faire comme ceci: p>
Calendar thisDay = Calendar.getInstance(); thisDay.set(Calendar.HOUR, 0); thisDay.set(Calendar.MINUTE, 0); thisDay.set(Calendar.SECOND, 0); Date d=thisDay.getTime();//this returns Date :) - it is funny but true
@: Utilisation de ce qui précède, puis "SimpleDateFormat Thedate = Nouveau SimpleDateFormat (" DD / mm / aaaa ");" et "String FormattedDate = TheDate.Format (D); DATES_STRINGS.ADD (formatéddate);" , (parce que je veux stocker des dates comme des chaînes) n'a pas travaillé. Mâblez le même problème ..
: Alors, avez-vous d'autres idées pour cela? Peut-être un chèque afin de voir si la date est la même? Merci
Comment créez-vous que de créer un objet de date lorsque vous lisez à partir de DB?
: Désolé, je n'ai pas compris votre question?
Lorsque vous chargez vos données à partir de votre fichier (stockez les données dans le fichier n'est pas bon - pourquoi vous n'utilisez pas SQLite?), Comment le convertissez-vous en date? Vous lisez de la date de fichier TXT dans DD / MM / AAAA. Comment mettez-vous cette chaîne en date?
: OK, j'ai mis à jour.Je ne veut pas utiliser de base de données pour cela. Et je veux stocker des données dans le fichier Excel (CSV) .Merci!
@George, je suis tout à fait sûr que Excel peut gérer un fichier qui a plusieurs points qui ont la même valeur X.
Il y a quelques solutions possibles pour ce problème: p>
au lieu d'une date, mettez la durée UNIX de la date (valeur longue). Afin de le montrer, vous pouvez convertir la heure UNIX en date formatée. p> li>
Étant donné que Excel peut gérer les dates, modifier le fichier de sortie et utiliser "= date (année, mois, jour)" ou "= datevalue (" 2013/4/20 ")" p> l > ol>
C'est tout parce que le problème n'est même pas lié à Android. Il s'agit de montrer les données. Les données sont ok. C'est juste comment tu le montres. P>
: Je ne peux pas comprendre comment faire 1.Can vous donnez un exemple basé dans mon code? En outre, je n'ai pas compris 2.Comment devrais-je le faire? Merci pour votre aide.
Les deux exemples n'impliquent pas de code Android (à l'exception du n ° 1 que vous utilisez simplement de la date.gettime ()). Le reste est fait dans Excel. Pour # 2, vous créez une nouvelle colonne qui référence à la colonne de la date. Si la colonne de la date est "A" et que la nouvelle colonne est "C", vous créez les valeurs des cellules "C" selon "A": "= DateValue ($ A1)" pour la première cellule "= DateValue ($ A2) "Pour la seconde et ainsi de suite. Bien sûr, au lieu de l'écrire à chaque fois que vous pouvez faire glisser l'icône inférieure droite de la cellule pour créer automatiquement de nouvelles cellules.
: Je veux faire de l'intrigue à droite. Je ne me soucie pas tellement pour le fichier Excel.
Donc, si vous ne vous souciez pas du fichier Excel, créez simplement votre propre application (en utilisant n'importe quel langage de programmation et plate-forme que vous souhaitez) qui le montre bien. Les données sont toujours bien et peuvent être traitées.
Mais le problème est que je ne peux pas gérer les données de l'intrigue des axes X.
Pourquoi ne pouvez-vous pas gérer les données dans l'intrigue X axe? Excel peut le gérer juste bien.
OK, puisque je ne l'ai jamais utilisé, je n'ai que des idées: avez-vous essayé de définir les valeurs X pour faire des cordes à la place? ou des valeurs longues?
: J'ai essayé d'utiliser des valeurs de date ou de chaîne. Mais le problème n'est pas si.le problème est que l'utilisateur entre dans certaines données dans un champ Editext et appuie sur le bouton Enregistrer. Sort, les données et la date sont enregistrées. , pendant une journée (le même jour), l'utilisateur peut entrer diverses données.Et faire l'intrigue, j'ai des points de données égaux et de la date.Mais je veux que les données d'un jour soient liées en une seule journée.
Malheureusement, je ne sais pas comment gérer cette bibliothèque. Si vous ne trouvez pas de solution, une solution de contournement peut être d'utiliser plusieurs légendes / couches.
Si je ne suis pas très erroné, ce n'est pas un problème d'enregistrement ou de chargement des données, mais simplement d'afficher les données. Votre algorithme de graphique devrait reconnaître des dates égales et ne pas faire une nouvelle entrée pour cela. P>
tel qu'il est, il semble que la date est traitée comme une étiquette, pas comme valeur d'axe de x, qui serait raisonnable car la chaîne de date n'est pas numérique. P>
Je suggère de vérifier AcharTengine s'il existe un moyen de fournir des valeurs X supplémentaires, puis de ne les laisser augmenter que si la chaîne de date de la prochaine entrée est différente de l'entrée précédente. P>
Vous devez probablement donner un modèle différent à AcharTengine. P>
Je ne pense pas que ce soit un problème d'enregistrement, car la date stockée est la bonne, donc tout comportement qu'il y a surtout comme prévu. P>
C'est une question AcharTengine. Le modèle interne utilisé pour être conservé dans Maintenant, la solution à votre problème est d'avoir une plage plus large sur l'axe X. P> ArrayList code> S et ces problèmes n'existaient pas. À un moment donné, il y avait un effort communautaire pour rendre AcharTengine plus rapidement avec beaucoup de points de données. À ce stade, le modèle a commencé à utiliser une carte
code> au lieu d'une arrayliste code> code>. Cette implémentation a empêché d'avoir la même valeur x ajoutée plusieurs fois. Cependant, afin de résoudre ce problème, j'ajoute une très petite valeur à x, si elle existe déjà. Dans votre exemple, la première valeur est
20/04/2013 00: 00: 00.0 code>, la seconde est à
20/04/2013 00: 00: 00.001 code> et le Troisième est
20/04/2013 00: 00: 00.002 code>.
renderer.setXAxisMax(someDate.getTime());
: J'ai fait ce que vous avez dit et cela semblait travailler..J'ai entré des données le 04/05/2013 et l'intrigue était correcte, comme celle que j'ai ci-dessus.Mais, lorsque j'ai entré d'autres données au 05/05/2013 Le 04/05/2013 dans l'axe X a été remplacé par 05/05/2013 et dans l'axe Y où toutes les données ..
: Peut-être parce que j'ai "date someate = null;"? Aussi, j'utilise "SimpleDateFormat Formatter = Nouveau SimpleDateFormat (" DD / mm / aaaa ", locale.us);" Pour les dates. (Merci d'avoir aidé)
: J'ai mis à jour.Les "Dates_strings" est une liste de chaînes qui contient les dates.Je mettez le "SOMDATE" comme premier date que je sauvegarde (utilisation).
Appelez simplement le sexaxismax () avec une date ultérieure que la dernière valeur.
: J'ai mis à jour mon message montrant le code que j'utilise pour ça. Je reçois toujours le même.ca que vous vérifiez si je défini la date de la date initiale et la dernière date? En outre, j'utilise lastdate = c.gettime () et ensuite "Mrender. sexaxismax (lastdate.gettime ()); " (encore une fois lastdate.bettime ()) à setxaxismax.Merci
Je ne comprends pas les problèmes que vous avez maintenant.
: Ça ne marche pas.Je entrez des données au 05/05/13, puis le 06/05/13 et l'intrigue n'a montré que 06/05/13 dans x axe. Le code que j'utilise pour initiale et latte? Est-ce que ça va ? Vous avez dit de mettre une date qui est plus tard que la dernière valeur.So, je définis une date initiale à la "dernière date" et j'ajoute un jour pour avoir le lastdate.parce que je ne sais pas ce que le Le dernier jour sera l'utilisateur. L'utilisateur peut entrer des données dans un mois entier, dans une semaine, chaque fois qu'il veut.
Mettez toujours à jour la valeur MAX Axe X pour être la date entrée maximale + 1 jour par exemple.
: Je pense que le problème consiste à sauvegarder et à charger! Parce que j'ai vu que si je saisi des données une autre date, elle ne garde que la dernière date dans le fichier.SO, j'accepte votre réponse et upvoting, mais pouvez-vous m'aider avec ça? Vous vérifiez mon code pour sauver et charger les dates? S'il vous plaît, il est petit.
: Je pense que dans le chargement, j'ai un problème.
Laissez-nous Continuez cette discussion en chat
Je ne comprends probablement pas le problème exact que vous avez. Je pense avoir répondu à l'AcharTengine que vous avez eu.
inclure également l'instantané pour le rendre plus clair