2013-04-20 51 views
6

我有一個應用程序,用戶在edittext中輸入數據並按下保存按鈕。在一天中(同一天 - >許多用戶數據)保存用戶數據

通過按'保存'我在文件中保存用戶數據(在一列中)和當前日期(在另一列中)。

然後,我按另一個按鈕並繪製(使用achartengine)日期(x軸)數據(y軸)。 「1」(用戶數據) - > 20/4/2013,「2」 - > 20/4/2013,「3」 - > 20,因此,在一天中輸入數據/ 4/2013

並在繪圖中我有3個點在Y軸(OK)和3個點在X軸(不好)。

我想在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 http://i35.tinypic.com/2rmsck5.png

但我需要圖如下圖所示:在同一天輸入的數據應該被放在一起:: This is what I want http://i38.tinypic.com/255p5i9.png

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

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

包括快照太,使其更清楚 – Kiran 2013-04-20 19:17:06

回答

1

這確實是一個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

+0

:我做了你所說的,它似乎工作..我在04/05/2013輸入了一些數據,情節是好的,就像我上面的那個。但是,當我在05/05/2013年4月5日在X軸被替換爲05/05/2013和Y軸所有的數據.. – George 2013-05-04 22:53:24

+0

:也許因爲我有「Date someDate = null;」?此外,我使用「SimpleDateFormat格式化程序=新的SimpleDateFormat(「dd/MM/yyyy」,Locale.US);「 (感謝您的幫助) – George 2013-05-04 22:58:57

+0

:我更新了。「dates_Strings」是一個包含日期的字符串列表。我把「somedate」作爲我保存(使用)的第一個日期。 – George 2013-05-05 06:58:13

1

好的。

當您調用新的Date()時,還可以確定創建時間(默認格式爲:1970年1月1日,00:00:00 GMT)。因爲你的積分是在不同的時間,但相同的日期創建的,所以你的積分不會對齊。

所以,你應該做這樣的:

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 

那麼你可以使用d爲當前日期:)。

希望它是真實的,它可以幫助, 託尼

+0

@:使用上述,然後 「的SimpleDateFormat thedate =新的SimpleDateFormat(」 DD/MM/YYYY 「);」 與「字符串formattedDate = thedate.format(d); dates_Strings.add(formattedDate);」 ,(因爲我想把日期存儲爲字符串)沒有工作。同樣的問題.. – George 2013-04-23 20:54:50

+0

:那麼,你有任何其他的想法嗎?也許檢查,以查看日期是否相同?謝謝你 – George 2013-04-24 09:33:10

+0

當你從數據庫讀取數據時,你如何創建一個日期對象? – toni 2013-04-24 13:59:27

1

有此問題的一些可能的解決方案:

  1. ,而不是一個日期,把日期的UNIX時間(長期價值)。爲了顯示它,您可以將unix時間轉換爲格式化日期。

  2. ,因爲Excel可以處理日期,編輯輸出文件,並使用 「=日期(年,月,日)」 或 「= DATEVALUE(」 2013年4月20日 「)」

這都是因爲這個問題甚至都與android無關。這是關於顯示數據。數據是好的。這只是你如何展示它。

+0

:我不知道該怎麼做1.你能給我一個基於我的代碼的例子嗎?另外,我不明白2.我該怎麼做?謝謝你的幫助。 – George 2013-04-27 21:13:45

+0

這兩個示例都不涉及android代碼(除了#1,您只使用Date.getTime())。其餘的都是在excel中完成的。對於#2,您將創建一個引用日期列的新列。如果日期列爲「A」,新列爲「C」,則根據第一個單元格的「A」:「= DATEVALUE($ A1)」創建「C」單元格的值,「= DATEVALUE($ A2)「爲第二等。當然,而不是每次拖動單元格的右下角圖標時自動創建新單元格。 – 2013-04-27 21:41:22

+0

:我想讓情節正確。我不在乎excel文件。 – George 2013-04-28 10:26:56

1

如果我沒有太大誤解,這不是保存或加載數據的問題,而只是顯示數據。你的圖算法應該識別相同的日期,並且不要爲它創建一個新條目。

就這樣,它看起來像日期被視爲標籤,而不是x軸值,這是合理的,因爲日期字符串不是數字。

我建議檢查achartengine是否有辦法額外提供x值,然後讓它們僅在下一個條目的日期字符串與先前條目不同時才增加。

您可能必須爲achartengine提供不同的模型。

我不認爲這是一個節省的問題,因爲存儲的日期是正確的,所以任何行爲大多是預期的。