如何使用图表视图来表示sqlite数据?

时间:2016-01-22 10:22:18

标签: android android-sqlite android-graphview

我有一个图表视图来实现分析图 所有x轴和y轴数据都从sqlite db数据中获取以显示输出 x轴显示日期 y轴显示重量

但我不知道实施它们,我被卡住了, 下面是我的代码,但它错了,我还没有完成,有人可以帮我解决和构建

  DBHelperNote connect = new DBHelperNote(getActivity());
        SQLiteDatabase db = connect.getReadableDatabase();
        Cursor cursor = db.rawQuery("SELECT * FROM weight;",null);

        String[] weight = new String[cursor.getCount()];
        int i = 0;

        while(cursor.moveToNext()){
            d = cursor.getString(cursor.getColumnIndex("weightnum"));
            weight[i] = d;
            i++;
        }

        String[] date = new String[cursor.getCount()];
        int r = 0;
        while(cursor.moveToNext()){
            e = cursor.getString(cursor.getColumnIndex("date"));
            date[r] = e;
            r++;
        }

        GraphView line_graph = (GraphView) contentView.findViewById(R.id.graph);
        LineGraphSeries<DataPoint> line_series =
                new LineGraphSeries<DataPoint>(new DataPoint[] {

>> here "while" getting error

                        while ( a!=weight.length) {
                           new DataPoint(Integer.parseInt(weight[i]), Integer.parseInt(date[i]));
                            i++;
                            }

                }
        );
        line_graph.addSeries(line_series);
        line_series.setDrawDataPoints(true);
        line_series.setDataPointsRadius(10);
        line_series.setOnDataPointTapListener(new OnDataPointTapListener() {
            @Override
            public void onTap(Series series, DataPointInterface dataPoint) {
                Toast.makeText(getActivity(), "Series: On Data Point clicked: " + dataPoint, Toast.LENGTH_SHORT).show();
            }
        });

1 个答案:

答案 0 :(得分:0)

Hmn,它们的示例中的数据类型可能是错误,它们使用double而不是int。 http://www.android-graphview.org/documentation/category/live-chart

private DataPoint[] generateData() {
        int count = 30;
        DataPoint[] values = new DataPoint[count];
        for (int i=0; i<count; i++) {
            double x = i;
            double f = mRand.nextDouble()*0.15+0.3;
            double y = Math.sin(i*f+2) + mRand.nextDouble()*0.3;
            DataPoint v = new DataPoint(x, y);
            values[i] = v;
        }
        return values;