java - 在一天内保存用户数据(同一天 -> 许多用户数据)

标签 java android achartengine

我有一个应用程序,用户在 edittext 中输入数据并按下保存按钮。

通过按“保存”,我将用户数据(在一列中)和当前日期(在另一列中)保存在一个文件中。

然后,我按下另一个按钮并制作绘图(使用图表引擎)日期(x 轴)数据(y 轴)。

因此,在一天中输入数据会导致保存,例如:“1”(用户数据)-> 20/4/2013,“2”-> 20/4/2013,“3”-> 20/2013 年 4 月。

在绘图中,我在 y 轴上有 3 个点(好),在 x 轴上有 3 个点(不好)。

我想在 x 轴上有一个点,因为数据是在同一天输入的。

我保存数据:

public void savefunc(){

        SimpleDateFormat thedate = new SimpleDateFormat("dd/MM/yyyy"); 
        Date d=new Date();

        String formattedDate=thedate.format(d);
        Log.d("tag","format"+formattedDate);
        dates_Strings.add(formattedDate);


        double thedata=Double.parseDouble(value.getText().toString().trim());
            mydata.add(thedata);


        File sdCard = Environment.getExternalStorageDirectory();
        File directory = new File (sdCard, "MyFiles");
        directory.mkdirs();            
        File file = new File(directory, filename);

        FileOutputStream fos;

        //saving them
        try {
           fos = new FileOutputStream(file);

              BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fos));
              for (int i=0;i<mydata.size();i++){
                 bw.write(mydata.get(i)+","+dates_Strings.get(i)+"\n");
              }
              ...

如何保存一天中的用户数据?

也许在这里检查一下:Date d=new Date();?检查是否是同一天。

或者在这里:bw.write(mydata.get(i)+","+dates_Strings.get(i)+"\n");

但是我想不通。

例如,我在日期“20/4/2013”​​中输入数据“1”、“2”、“3”。

这是我现在使用我的代码得到的: This is what I get now

但我需要如下图:同一天输入的数据应该放在一起::This is what I want

----------------更新---------------------------- ------------------

  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));
    }

最佳答案

这确实是一个 AChartEngine 问题。内部模型曾经保存在 ArrayList 中,因此不存在这些问题。在某个时候,社区努力通过大量数据点使 AChartEngine 更快。那时,模型开始使用 Map 而不是 ArrayList。此实现防止多次添加相同的 X 值。但是,为了解决这个问题,我向 X 添加了一个非常小的值(如果它已经存在)。在您的示例中,第一个值是 20/04/2013 00:00:00.0,第二个值是 20/04/2013 00:00:00.001 和第三个是 20/04/2013 00:00:00.002

现在,您的问题的解决方案是在 X 轴上设置更宽的范围。

renderer.setXAxisMax(someDate.getTime());

someDate 可以是 21/04/2013

关于java - 在一天内保存用户数据(同一天 -> 许多用户数据),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16124137/

相关文章:

android - 如何使用 achartengine 设置条形宽度。我的最后一个酒吧被挤掉了

java - Netty 管道中的多个 ChannelInboundHandlerAdapter

java - Spring 工具套件中未显示关键服务器日志消息

java - 当没有消费者时,使用 RabbitMQ RPC 不会失败。这是预期的行为吗?

android - 饼图 : how to display text just on some pie slices using AChartEngine Android library?

android - 如何在图表引擎上绘图、书写或简单地使用 Canvas?

java - AWS 开发工具包 2.x DynamoDB 文档 API

android - SQLiteOpenHelper 类对上下文参数做了什么?

android - 如何确定 Android 上 Google Play 服务的实际内部版本号?

android - 无法继承和覆盖 ArrayAdapter