ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

java-使用achartengine上的数据库中的远程数据生成图

2019-10-09 22:29:53  阅读:263  来源: 互联网

标签:achartengine android java graph


我正在尝试使用achartengine生成一个图,该图从数据库中提取数据并使用该数据填充该图.
以下是填充图形的代码.所有这些数据都存储在

“dataArraylist”.
此代码将数据填充到图形中

        CategorySeries series = new CategorySeries("Bar Graph");     //"series" = graph
        for(int i=0; i< size; i++)
        {
            series.add("Bar"+(i+1), dataArraylist.get(i));                      //add each of the value to the series i.e graph
        }


        XYMultipleSeriesDataset dataset= new XYMultipleSeriesDataset(); 
        dataset.addSeries(series.toXYSeries());                                       //add the graph into a dataset


        // customisation for the first line
        XYSeriesRenderer renderer = new XYSeriesRenderer();
        renderer.setDisplayChartValues(true);
        renderer.setChartValuesSpacing((float) 0.5);
        renderer.setColor(Color.WHITE);

        XYMultipleSeriesRenderer mRenderer = new XYMultipleSeriesRenderer(); //create a new renderer.
        mRenderer.addSeriesRenderer(renderer); //renderer lets one to change the proerties of the graph i.e line colour etc
        mRenderer.setXTitle("X VALUES");
        mRenderer.setXTitle("Y VALUES");

        mRenderer.setChartTitle("This is title");

        Intent intent = ChartFactory.getBarChartIntent(context, dataset, mRenderer,Type.DEFAULT, "Title"); //package the whole chart together


        return intent;

但是,当我尝试对其进行编译时,出现Null Exception错误,以下是在null异常之后收到的错误:

                       04-07 21:09:31.713: E/AndroidRuntime(4091): java.lang.IllegalStateException: Could not execute method of the activity

在将数据从一个活动传递到图形活动时,我也遇到了问题.一个答案将不胜感激

完整日志为:

                   04-07 21:09:31.674: D/AndroidRuntime(4091): Shutting down VM
04-07 21:09:31.674: W/dalvikvm(4091): threadid=1: thread exiting with uncaught exception (group=0x40015560)
04-07 21:09:31.713: E/AndroidRuntime(4091): FATAL EXCEPTION: main
04-07 21:09:31.713: E/AndroidRuntime(4091): java.lang.IllegalStateException: Could not execute method of the activity
04-07 21:09:31.713: E/AndroidRuntime(4091):     at android.view.View$1.onClick(View.java:2144)
04-07 21:09:31.713: E/AndroidRuntime(4091):     at android.view.View.performClick(View.java:2485)
04-07 21:09:31.713: E/AndroidRuntime(4091):     at android.view.View$PerformClick.run(View.java:9080)
04-07 21:09:31.713: E/AndroidRuntime(4091):     at android.os.Handler.handleCallback(Handler.java:587)
04-07 21:09:31.713: E/AndroidRuntime(4091):     at android.os.Handler.dispatchMessage(Handler.java:92)
04-07 21:09:31.713: E/AndroidRuntime(4091):     at android.os.Looper.loop(Looper.java:123)
04-07 21:09:31.713: E/AndroidRuntime(4091):     at android.app.ActivityThread.main(ActivityThread.java:3683)
04-07 21:09:31.713: E/AndroidRuntime(4091):     at java.lang.reflect.Method.invokeNative(Native Method)
04-07 21:09:31.713: E/AndroidRuntime(4091):     at java.lang.reflect.Method.invoke(Method.java:507)
04-07 21:09:31.713: E/AndroidRuntime(4091):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
04-07 21:09:31.713: E/AndroidRuntime(4091):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
04-07 21:09:31.713: E/AndroidRuntime(4091):     at dalvik.system.NativeStart.main(Native Method)
04-07 21:09:31.713: E/AndroidRuntime(4091): Caused by: java.lang.reflect.InvocationTargetException
04-07 21:09:31.713: E/AndroidRuntime(4091):     at java.lang.reflect.Method.invokeNative(Native Method)
04-07 21:09:31.713: E/AndroidRuntime(4091):     at java.lang.reflect.Method.invoke(Method.java:507)
04-07 21:09:31.713: E/AndroidRuntime(4091):     at android.view.View$1.onClick(View.java:2139)
04-07 21:09:31.713: E/AndroidRuntime(4091):     ... 11 more
04-07 21:09:31.713: E/AndroidRuntime(4091): Caused by: java.lang.NullPointerException
04-07 21:09:31.713: E/AndroidRuntime(4091):     at hudds.fc.coach.ReadinessGraph.getIntent(ReadinessGraph.java:45)
04-07 21:09:31.713: E/AndroidRuntime(4091):     at hudds.fc.coach.Overview.generateGraph(Overview.java:101)
04-07 21:09:31.713: E/AndroidRuntime(4091):     ... 14 more
04-07 21:09:34.746: I/Process(4091): Sending signal. PID: 4091 SIG: 9

以下代码从数据库下载数据:

        try {
        if (json.getString(KEY_SUCCESS) != null) {

            String getsize=json.getString("size");
            size = Integer.parseInt(getsize);

            for (int i = 0; i < size; i++) { 
            String getRating=json.getJSONArray("number").getJSONObject(i).getString("rating_number");
            int rating = Integer.parseInt(getRating);


            readinessRatng.add(rating);
            String printratings=readinessRatng.toString();
            Log.e("ratings are", printratings);
            }

        }


    else{

                     }
        }

    catch (JSONException e) {
        e.printStackTrace();
            }

解决方法:

请将此LINK用于achartengine

 public XYMultipleSeriesRenderer getBarDemoRenderer() {
    XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
    renderer.setAxisTitleTextSize(16);
    renderer.setChartTitleTextSize(20);
    renderer.setLabelsTextSize(15);
    renderer.setLegendTextSize(15);
    renderer.setMargins(new int[] {20, 30, 15, 0});
    SimpleSeriesRenderer r = new SimpleSeriesRenderer();
    r.setColor(Color.BLUE);
    renderer.addSeriesRenderer(r);
    r = new SimpleSeriesRenderer();
    r.setColor(Color.GREEN);
    renderer.addSeriesRenderer(r);
    return renderer;
  }

 private XYMultipleSeriesDataset getBarDemoDataset() {
    XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
    final int nr = 10;
    Random r = new Random();
    for (int i = 0; i < SERIES_NR; i++) {
      CategorySeries series = new CategorySeries("Demo series " + (i + 1));
      for (int k = 0; k < nr; k++) {
        series.add(100 + r.nextInt() % 100);
      }
      dataset.addSeries(series.toXYSeries());
    }
    return dataset;
  }



private void setChartSettings(XYMultipleSeriesRenderer renderer) {
    renderer.setChartTitle("Chart demo");
    renderer.setXTitle("x values");
    renderer.setYTitle("y values");
    renderer.setXAxisMin(0);
    renderer.setXAxisMax(5);
    renderer.setYAxisMin(0);
    renderer.setYAxisMax(250);
  }

添加以上方法,并从oncreate方法中调用以下行

XYMultipleSeriesRenderer renderer = getBarDemoRenderer();
setChartSettings(renderer);
Intent intent = ChartFactory.getBarChartIntent(this, getBarDemoDataset(), renderer, Type.DEFAULT);
startActivity(intent);

标签:achartengine,android,java,graph
来源: https://codeday.me/bug/20191009/1882436.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有