achartengine – no se puede calcular cómo usar fechas como eje x – el archivo que guardo está vacío

Tengo una actividad en la que tomo la entrada de editar texto y almacenarlo en una lista.

También almaceno en lista la fecha actual.

Luego, presiono el botón guardar, que guarda lo anterior.

Al día siguiente, el usuario ingresa algunos datos más y guarda, y así sucesivamente.

Quiero hacer una gráfica con el formato de fecha del eje xy los valores que el usuario ingresó.

En una actividad tengo:

... String filename = "data.csv"; List mydata=new ArrayList(); List mydate=new ArrayList(); ....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"); ... 

En la actividad LineGraph:

 public class LineGraph extends Activity { private static List date = new ArrayList(); private static List data = new ArrayList(); 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)); } 

La función de lectura:

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

Tengo estos problemas:

1) El archivo que recibo está vacío (hay algún problema con la Fecha porque el método para guardar y leer de un archivo funciona).

2) En la pantalla del gráfico aparece un fondo blanco (por supuesto, no hay datos porque el archivo está vacío), pero ¿por qué fondo blanco? Uso el mismo código para otros fines y no recibo un fondo blanco.

3) No estoy seguro de cómo usar Fechas en el eje x. ¿Debo usar Lista? Lista? .

————————ACTUALIZAR————————- ——————————–

Ok, finalmente! (Después de la sugerencia del usuario ‘Dan’)

ChartFactory.getTimeChartView(this, dataset, mRenderer,"dd/MM/yyyy");

en lugar de ChartFactory.getLineChartIntent(context, dataset, mRenderer,"dd/MM/yyyy");

y no necesita usar la lista de cadenas, solo la lista de fechas

El código que trata con su archivo debe ser algo como esto (no comstackdo):

 public void savefunc(){ List myDate = new ArrayList(); //To store the formatted dates SimpleDateFormat thedate = new SimpleDateFormat("dd/MM/yyyy"); Date d=new Date(); //the current date String sd = thedate.format(d); // sd contains "16/04/2013", the formatted date myDate.add(sd); double thedata=Double.parseDouble(value.getText().toString().trim()); mydata.add(thedata); ... BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fos)); for (int i=0;i 

Espero eso ayude.

para diagtwigs dynamics usa GraphicalView en lugar de bash ::

  public GraphicalView mChartView; 

creat a xml ::

     

luego en nuestro código:

  LinearLayout layout = (LinearLayout) findViewById(R.id.graph); mChartView = ChartFactory.mChartView = ChartFactory.getLineChartView(getBaseContext(), dataset, renderer) layout.addView(mChartView); 
  • Después de ingresar los valores que lees de los campos de texto de edición a la derecha:

  • luego está pasando los nuevos valores para agregarlos en las listas de arreglos respectivas

  • a continuación, debe volver a llamar al código de linegraph después de agregar nuevos valores y recordar borrar series antes de leer las listas de arreglos (es decir, dataset.clear dataset.clear(); ) ie. cuando la función de código de línea comienza al principio, agregue dataset.clear (); porque si no borras los datos se superpondrán y es posible que a través de la excepción o la línea parezcan gruesos en los datos antiguos …

luego llama a mChartView.repaint(); para actualizar el gráfico

estos enlaces también te ayudarán a link1 link2

    Intereting Posts