need help in integrating achart-engine with databa

2019-06-05 00:18发布

问题:

Can u please help me in creating a simple bar chart (for android) where the values are got from sqlite database. for eg consider the following table

    year         Units Sold
    2001          2000
    2002          2100
    2003          1900

I need to create a bar graph with x-axis as year and y-axis as units sold . Can u Plz consider this as a request . I dont know how to import data from database .

回答1:

first you have to fetch the values from the data base and stored into array with corresponding data type . Do like this.....

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

You will get the bar chart for with data base values. All the best.