2012-03-25 71 views
1

可以请你帮我创建一个简单的条形图(对于android)从sqlite数据库中获得值。例如考虑下表需要帮助在整合achart引擎与数据库的Android

year   Units Sold 
    2001   2000 
    2002   2100 
    2003   1900 

我需要创建一个条形图,以x轴为年,y轴为销售单位。你能否将这视为一个请求?我不知道如何从数据库导入数据。

回答

2

首先,您必须从数据库中获取值并将其存储到具有相应数据类型的数组中。像这样做.....

List<int[]> initial; 
    int[] my_year; 
    int[] my_units_sold; 
    public void onCreate() 
    { 
     int Column1 = net_db_cur.getColumnIndex("Year"); 
     int Column2 = net_db_cur.getColumnIndex("Units Sold"); 
     cur = sampleDB.rawQuery("SELECT * FROM " + Table_Name , null); 
     my_year = new int[columncount]; 
     my_units_sold = new int[columncount]; 
     if (cur.moveToFirst()) 
     {      
      for (int i = 0; i < columncount; i++) 
      { 
       my_year [i] = net_db_cur.getInt(Column1); 
       my_units_sold[i] = net_db_cur.getInt(Column2); 
       cur.moveToNext(); 
      } 
     } 
    initial = new ArrayList<int[]>();   
initial1.add(my_year); 
    initial1.add(my_units_sold); 
ll.addView(createBarChart(initial ,Color.BLUE,10,0,14,2000000,20000000,1,x_axis_labels1,x_axis_labels2,y_axis_labels1, y_axis_net_labels2,Color.parseColor("#ffffff"))); 
    } 

    public View createBarChart(int[] values,int[] colors,int lable_text_size,int xMin,int xMax,int yMin,int yMax,double bar_space,double[] x_axis_lables1,String[] x_axis_lables2,double[] y_axis_lables1,String[] y_axis_lables2, int lable_color) 
    { 
     XYMultipleSeriesRenderer mrenderer = new XYMultipleSeriesRenderer(); 
     XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset(); 

     /*for (int i = 0; i <values.length; i++) 
     {*/ 
      CategorySeries series = new CategorySeries(""); 
      /*double[] v = values.get(i); 
      int seriesLength = v.length;*/ 
      for (int k = 0; k < values.length; k++) 
      { 
       series.add(values[k]); 

      } 
      dataset.addSeries(series.toXYSeries()); 
      //} 

      //mrenderer.setMargins(new int[] { 10, 65, 10, 15 }); 
      int color_length = colors.length; 
      for (int i = 0; i < color_length; i++) 
      { 
       SimpleSeriesRenderer r = new SimpleSeriesRenderer(); 
       r.setColor(colors[i]); 
       r.setChartValuesSpacing(15); 
       mrenderer.addSeriesRenderer(r); 
      } 

      mrenderer.setOrientation(Orientation.HORIZONTAL); 
      mrenderer.setInScroll(false); 
      mrenderer.setGridColor(Color.BLACK); 
      mrenderer.setYLabelsAlign(Align.RIGHT);   
      mrenderer.setPanEnabled(false, false); 
      mrenderer.setZoomEnabled(false, false); 
      mrenderer.setBarSpacing(bar_space);    
      mrenderer.setLabelsTextSize(lable_text_size); 
      mrenderer.setAxesColor(Color.BLACK); 
      mrenderer.setXAxisMin(xMin); 
      mrenderer.setXAxisMax(xMax);   

      for(int i=0;i<x_axis_lables2.length;i++) 
      { 
       mrenderer.addXTextLabel(x_axis_lables1[i],x_axis_lables2[i]); 
      } 
      mrenderer.setYAxisMin(yMin); 
      mrenderer.setYAxisMax(yMax);  
      for(int j=0;j<y_axis_lables1.length;j++) 
      { 
       mrenderer.addYTextLabel(y_axis_lables1[j],y_axis_lables2[j]); 
      } 


      mrenderer.setLabelsColor(lable_color); 
      return (ChartFactory.getBarChartView(Income.this, dataset, mrenderer, Type.DEFAULT)); 
     } 

您将得到带有数据库值的条形图。祝一切顺利。

+0

canyou帮我使用这段代码。 http://stackoverflow.com/questions/13909297/graph-plotted-using-database-doesnot-plot-in-android – user1844638 2012-12-17 07:00:29