achartengine - nie można określić, jak używać dat jako osi x - zapisany plik jest pusty
Mam działanie, w którym biorę dane wejściowe z edycji tekstu i zapisuję je na liście.
Przechowuję również na liście aktualną datę.
Następnie naciskam przycisk zapisywania, który zapisuje powyższe.
Następnego dnia użytkownik wprowadzi więcej danych i zapisze i tak dalej.
Chcę utworzyć wykres z formatem daty osi X i osi y wartości, które wprowadził użytkownik.
W jednym działaniu mam:
...
String filename = "data.csv";
List<Double> mydata=new ArrayList<Double>();
List<Date> mydate=new ArrayList<Date>();
....value=(EditText) findViewById(R.id.enter_data);
...
switch (v.getId()){
case R.id.savebtn:
savefunc();
break;
case R.id.graphicsbtn:
Intent i = new Intent();
i.setClassName(this,LineGraph.class.getName());
this.startActivity(i);
break;
public void savefunc(){
SimpleDateFormat thedate = new SimpleDateFormat("dd/MM/yyyy");
Date d=new Date();
try{
d=thedate.parse(filename);
mydate.add(d);
}
catch (ParseException e){
// TODO Auto-generated catch block
e.printStackTrace();
}
double thedata=Double.parseDouble(value.getText().toString().trim());
mydata.add(thedata);
..
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fos));
for (int i=0;i<mydate.size();i++){
bw.write(mydate.get(i)+","+mydata.get(i)+"\n");
...
W aktywności LineGraph:
public class LineGraph extends Activity {
private static List<Date> date = new ArrayList<Date>();
private static List<Double> data = new ArrayList<Double>();
public Intent getIntent(Context context){
readfunc();
TimeSeries series = new TimeSeries("Showing data");
for (int i=0;i<date.size();i++){
series.add(date.get(i),data.get(i));
}
Funkcja odczytu:
public void readfunc(){
SimpleDateFormat thedate = new SimpleDateFormat("dd/MM/yyyy");
Date d=new Date();
try{
d=thedate.parse(filename);
}
catch..
BufferedReader br = new BufferedReader(new InputStreamReader(fis));
do {
s = br.readLine();
if (s != null ){
String[] splitLine = s.split(",");
date.add(d);//Double.parseDouble(splitLine[0]));
data.add(Double.parseDouble(splitLine[1]));
Mam te problemy:
1) Otrzymany plik jest pusty (jakiś problem z datą, ponieważ działa metoda zapisywania i czytania z pliku).
2) Na ekranie wykresu pojawia się białe tło (oczywiście brak danych, ponieważ plik jest pusty), ale dlaczego białe tło? Używam tego samego kodu do innych celów i nie otrzymuję białego tła.
3) Nie wiem, jak używać dat na osi x. Czy powinienem używać listy? Lista? .
------------------------AKTUALIZACJA------------------------- --------------------------------
Ok, wreszcie! (Po sugestii użytkownika „Dan”)
użyłemChartFactory.getTimeChartView(this, dataset, mRenderer,"dd/MM/yyyy");
zamiastChartFactory.getLineChartIntent(context, dataset, mRenderer,"dd/MM/yyyy");
i nie musisz używać listy ciągów, tylko listy dat