Android Graphview更改x轴数据

时间:2014-08-19 14:29:41

标签: android charts android-graphview

在我的应用程序中,我正在使用GraphView库来创建LineGraphView。它显示了从18.01到30.01的示例中指定日期的数据。当我更改边界时,例如从25.01更改为29.01 GraphView更新图表(剪切不需要的行)但仍显示错误的x轴数据(18.01到30.01),但是当用户开始与图表交互(缩放,滚动)时,它会更新它的x轴,一切都很好。有没有一种方法可以强制GraphView更新它的x轴? 如果用户在更改日期之前已经与图表进行交互(缩放,滚动),如果没有正确的交互graphview更新,我只遇到了这个问题。我正在以这种方式创建图表:

在onCreate中:

mGraphView = new LineGraphView(this, "Temperature Measurements");

我从数据库中获取数据时创建图表的功能:

public void createChart(Cursor cursor) {
        GraphViewData[] values = new GraphViewData[cursor.getCount()];
        while (cursor.moveToNext()) {
            String time = cursor.getString(cursor
                    .getColumnIndex(MeasurementEntry.DATE_IN_MINUTES));
            String temp = cursor.getString(cursor
                    .getColumnIndex(MeasurementEntry.TEMPERATURE));
            values[cursor.getPosition()] = new GraphViewData(
                    Double.parseDouble(time), Double.parseDouble(temp));
        }

        mGraphView.removeAllSeries();
        mGraphView.addSeries(new GraphViewSeries(values));
        mGraphView.setScalable(true);
        mGraphView.getGraphViewStyle().setTextSize(15);

        final SimpleDateFormat formatter = new SimpleDateFormat(
                "dd.MM.yyyy HH:mm");
        mGraphView.setCustomLabelFormatter(new CustomLabelFormatter() {

            @Override
            public String formatLabel(double value, boolean isValueX) {
                if (isValueX) {
                    return formatter.format(new Date((long) value));
                }
                return null;
            }
        });
    }

以下是问题的屏幕截图:

enter image description here

1 个答案:

答案 0 :(得分:0)

好的,所以我做了,但我认为它可以做得更好,我做的是从父布局中删除graphView,创建新的graphview并添加新的graphview - 每次用户改变边界时我都会这样做。也许它会帮助某人(createChart方法的简短片段,容器是我的父布局):

container.removeView(mGraphView);
mGraphView = new LineGraphView(this, "Temperature Measurements");
container.addView(mGraphView);
mGraphView.removeAllSeries();
mGraphView.addSeries(new GraphViewSeries(values));
mGraphView.setScalable(true);
mGraphView.getGraphViewStyle().setTextSize(15);